一、ActiveMQ简介、安装
MQ英文名MessageQueue,中文名即消息队列,干嘛用的呢,说白了就是一个消息的接受和转发的容器,可用于消息推送。
ActiveMQ是由Apache出品的,一款流行的,能力强劲的开源消息中间件。
二、什么情况下使用ActiveMQ?
1.多个项目之间集成
(1) 跨平台
(2) 多语言
(3) 多项目
2.降低系统间模块的耦合度,解耦
软件扩展性
3.系统前后端隔离
前后端隔离,屏蔽高安全区
三、安装
1.jdk
2.解压
从webapps可以看出他自带容器,无需关联tomcat、jetty等。
3.启动
cd ${activemq}/bin
日志打印至控制台:./activemq console
静默启动:./activemq start | status |stop |restart
访问控制台:http://ip:8161/admin 用户名密码:admin/admin
四、ActiveMQ发送、接收消息
1.两种模式
1.1 点对点
大家接收到的消息都不一样,是瓜分的,瓜分消息队列中的数据,也就是,所有消费端合起来的消费的消息集合,就是消息队列中生产者所发布的所有消息。
如果我们下订单,肯定是点对点模式,正常的,我们的消费端有多个,一个订单被一个消费端消费就可以了,然后正常保存到数据库中。
1.2发布者/订阅者
大家接收到的消息是一样的,共享队列中的数据。
比如领导发送10封邮件给3个人,这三个人肯定是共享这10封邮件,使用点对点瓜分这10封邮件显然不合理,所以用发布者/订阅者模式。
2.实现
依赖
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.14.5</version> </dependency> |
2.1 点对点
如何实现点对点模式?
首先我们使用的是Maven项目,在项目的POM.xml添加ActiveMQ的依赖,依赖来自Maven的万能网站mvnresitory.com。5.14.5,哪个下载得多,就选哪个。
添加好依赖后,服务发布的时候,创建相应的连接工厂类。
默认我们去连接是不需要用户名和密码的,可以写成null。
连接的url默认是,其中IP是MQ所在服务器的IP。端口号是看源码得来的,不过配置文件中可以改。
然后用工厂类创建连接对象
连接对象启动连接
和我们的服务器交互会有会话的概念,比如我们的MyBatis和数据库交互有会话的概念。
创建会话对象
第一个参数为true,参数2给个null,或者其他的随便,因为不生效。
假设为false,第二个参数有4个取值。
分别是