JMS&ActiveMQ教程
基于JMS的消息传送
ActiveMQ与Spring集成
ActiveMQ与SpringBoot集成
ActiveMQ安全机制
ActiveMQ主从集群

ActiveMQ教程

 

 

Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。

 

 

ActiveMQ简介

 

ActiveMQ是Apache下的一个项目,采用Java语言开发;

 

ActiveMQ 是一款非常流行的开源消息服务器,实现了JMS规范;

 

官网: http://activemq.apache.org/

 

目前最新ActiveMQ最新版本为ActiveMQ 5.15.8,支持JMS1.1,不支持2.0以上的版本,它们的主要区别是2.0以上可以使用注解进行配置。

 

JMS只是定义了一组有关消息传送的规范和标准,并没有真正实现,也就说JMS只是定义了一组接口而已。就像JDBC抽象了关系数据库访问、JPA抽象了对象与关系数据库映射一样,JMS具体的实现由不同的消息中间件厂商提供,比如Apache ActiveMQ就是JMS规范的具体实现,Apache ActiveMQ才是一个消息服务系统,而JMS不是。

 

 

 

ActiveMQ能干什么

 

最主要的功能就是:实现JMS Provider用来帮助实现高可用、高性能、可伸缩、易用和安全的企业级面向消息服务的系统。

 

 

ActiveMQ特点

 

1.完全支持JMSI.1和J2EE1。4规范(持久化,XA消息,事务〕


2.支持多种传送协议:in-VM,TCP,SSL,UDP,JGroups,JXTA


3.可插拔的体系结构,可以灵活定制,如:消息存储方式、安全管理等


4.很容易和Application Server集成使用


5.多种语言和协议编写客户端。语言Java,C,C++,C#,Ruby,P以Python,PHP


6.从设计上保证了高性能的集群,客户端一服务器,点对点


7.可以很容易的和spring结合使用


8.支持通过JDBC和journal提供高速的消息持久化


9.支持与Axis的整合


 

ActiveMQ环境搭建

 

1. Linux下的ActiveMQ环境搭建

 

① ActiveMQ运行需要Java的支持,首先需要配置Java环境变量

 

② 将下载好的tar上传到Linux服务器/home/soft/目录下

 

③ 解压

 

tar -zxvf apache-activemq-5.15.8-bin.tar.gz -C /usr/local/

 

其中 -C /usr/local/ 指定把文件解压到哪里去;

 

解压后就安装完成了,即可使用,不需要其他操作。

 

④ 启动

 

• 切换到解压后的ActiveMQ的bin目录下

 

• 执行 ./activemq start

 

• 启动后有两个端口号,一个是web控制台:8161,一个是消息服务broker连接端口:61616

 

web管理控制台admin URL地址:http://localhost:8161

 

默认登录账号 admin 密码 admin,注意:Linux防火前要关闭

 

消息服务broker URL地址 : tcp://localhost:61616

 

⑤ 关闭

 

• 切换到解压后的ActiveMQ的bin目录下

 

• 执行./activemq stop

 

⑥ 无法关闭的问题

 

• 把data目录下的所有文件及目录都删除

 

• 把activeMQ主目录下的 tmp 目录也删除

 

2. Windows下的ActiveMQ环境搭建

 

• 下载activeMQ windows版本的压缩包

 

• 解压下载下来的压缩包,解压后就可以直接使用

 

• 进入解压后的目录的bin下面

 

• 在地址栏输入 cmd 后确定

 

• 在dos窗口里面输入: activemq start 进行启动

 

• 关闭:activemq stop

 

 

应用场景

 

1. 用户注册的时候,重点内容是将用户信息保存到数据库中,发短信验证或者是发邮件增加了业务的复杂度。这时使用MQ将发短信、发邮件通知MQ由另外的服务平台完成。

 

2. 搜索平台、缓存平台

 

查询数据,建立缓存、索引,不从数据库查询,从缓存或者索引库查询,当数据库发生增加、修改、删除操作时发消息给MQ,缓存平台或者是索引平台从MQ获取到这个消息,更新缓存或者索引。

 

① ActiveMQ使用的是标准的生产者(完成生产消息并发送消息)和消费者(获取消息,完成自己的业务逻辑)模型

 

② 有两种数据结构

 

③ Topic(发布订阅) 一个生产者对应多个消费者,消息默认不会持久化,需要手动配置持久化。如果A服务器挂了,再生产一条消息的话,会被B服务器拿去使用,就算重新启动,A服务器也不会再拿到消息了

 

④ 商品系统、库存系统、生成商品详情页面的系统,现在要添加一个商品信息,消息肯定是需要让库存系统以及商品信息详情页面系统知道的。

 

⑤ Queue(点对点)一个生产者对应一个消费者,默认消息持久化

 

• StringMessage

 

• mapMessage

 

• byteMessage

 

• objectMessage

 

要完成topic模式的消息持久化,需要保证每个消费者有唯一的clientID。

 

全部教程