ActiveMQ总结

原创
2019/07/29 20:08
阅读数 40

1.简介:ActiveMQ是一个消息队列应用服务器,支持JMS规范。

1.1.JMS介绍:

    全称:Java Message Service ,即为Java消息服务,是一套java消息服务的API标准。(标准即接口)

    实现了JMS标准的系统,称之为JMS Provider。

1.2.消息队列:消息队列是在消息的传输过程中保存消息的容器,提供一种不同进程或者同一进程不同线程直接通讯的方式

1.3.ActiveMQ作用:

    (1)实现两个不同应用(程序)之间的消息通讯。

    (2)实现同一个应用,不同模块之间的消息通讯。(确保数据发送的稳定性)

2.入门示例

需求:使用ActiveMQ实现消息队列模型。

2.1.配置步骤说明

(1)搭建ActiveMQ消息服务器。

(2)创建一个java项目。

(3)创建消息生产者,发送消息。

(4)创建消息消费者,接收消息。

2.2.搭建ActiveMQ消息服务器

(1)下载ActiveMQ,上传至Linux

(2)安装到/usr/local/activemq目录下

(3)启动ActiveMQ服务器

(4)浏览器访问ActiveMQ管理页面

2.2.创建java项目,导入jar包

2.3.创建消息生成器,发送消息

2.3.1.JMS常用api说明

(1)ConnectionFactory:链接工厂, 用于创建链接的工厂类型。

(2)Connection:链接,用于建立访问ActiveMQ连接的类型, 由链接工厂创建。

(3)Session:会话, 一次持久有效、有状态的访问,由链接创建。

(4)Destination、Queue、Topic

目的地, 即本次访问ActiveMQ消息队列的地址,由Session会话创建。

(4.1)interface Queue extends Destination

(4.2)Queue:队列模型,只有一个消费者。消息一旦被消费,默认删除。

(4.3)Topic:主题订阅中的消息,会发送给所有的消费者同时处理。

(5)Message:消息,在消息传递过程中数据载体对象,是所有消息【文本消息TextMessage,对象消息ObjectMessage等】具体类型的顶级接口,可以通过会话创建或通过会话从ActiveMQ服务中获取。

(6)MessageProductor:消息生成者, 在一次有效会话中, 用于发送消息给ActiveMQ服务的工具,由Session会话创建。

(7)MessageCustomer:

消息消费者【消息订阅者,消息处理者】, 在一次有效会话中, 用于ActiveMQ服务中获取消息的工具,由Session会话创建。

我们定义的消息生产者和消费者,都是基于上面API实现的。

2.3.2.代码编写思路:

(1)创建MyProductor类,定义sendMessage方法

(2)编写一个测试类测试

(3)测试

(4)创建消费消息者,消费信息

2.3.3.ActiveMQ监听器

使用ActiveMQ监听器来监听队列,可以持续消费消息。

2.3.3.1配置步骤说明:

(1)创建一个监听器对象。

(2)修改消费者代码,加载监听器。

2.3.4.ActiveMQ服务模式

2.3.4.1.PTP模式(point to point)

消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。

消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。

Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费、其它的则不能消费此消息了。

当消费者不存在时,消息会一直保存,直到有消费消费

我们的入门示例,就是采用的这种PTP服务模式。

2.3.4.2.TOPIC(主题订阅模式)

消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。

和点对点方式不同,发布到topic的消息会被所有订阅者消费。

当生产者发布消息,不管是否有消费者。都不会保存消息

所以,主题订阅模式下,一定要先有消息的消费者(订阅者),后有消息的生产者(发布者)。

 

 

展开阅读全文
打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部