现在的位置: 首页 > 综合 > 正文

AMQ: Publisher/Subscriber(发布/订阅者)消息模式开发流程

2018年08月11日 ⁄ 综合 ⁄ 共 1116字 ⁄ 字号 评论关闭

1


、订阅者(
Subscriber


)开发流程(
TopicListener.java


):

1.1


实现

MessageListener


接口:



onMessage()


方法中监听发布者发出的消息队列,并做相应处理。

1.2


创建

Connection



根据

url




user




password


创建一个

jms Connection



1.3


创建

Session





connection


的基础上创建一个

session


,同时设置是否支持事务和

ACKNOWLEDGE


标识。

1.4


创建

Topic



      




创建

2




Topic




topictest.messages



用于接收发布者发出的消息,

topictest.control



用于向发布者发送消息,实现双方的交互。

1.5


创建

consumer




producer


对象:

      




根据

topictest.messages



创建

consumer


,根据

topictest.control



创建

producer



1.6


接收处理消息:

      






onMessage()


方法中,对收到的消息进行处理,可直接简单在本地显示消息,或者根据消息内容不同处理对应的业务逻辑(比如:数据库更新、文件操作等
等),并且可以使用


producer


对象将处理结果返回给发布者。


2


、发布者(
Publisher


)开发流程(
TopicPublisher.java


):


2.1








MessageListener



接口:




onMessage()



方法中接收订阅者的反馈消息。

2.2








Connection





根据


url






user






password



创建一个


jms
Connection






2.3








Session








connection



的基础上创建一个


session



,同时设置是否支持事务和


ACKNOWLEDGE



标识。

2.4








Topic





      




创建


2






Topic






topictest.messages




用于向订阅者发布消息,


topictest.control




用于接收订阅者反馈的消息。这


2






topic



与订阅者开发流程中的


topic



是一一对应的。

2.5








consumer






producer



对象:

      




根据


topictest.messages




创建


publisher





根据


topictest.control




创建


consumer



,同时监听订阅者反馈的消息。

2.6





所有订阅者发送消息,并接收反馈消息:


      




示例代码中,一共重复


10



轮操作。

每轮先向所有订阅者发送


2000



个消息;

然后堵塞线程,开始等待;

最后通过


onMessage()



方法,接收到订阅者反馈的“


REPORT



”类信息后,才


print



反馈信息并解除线程堵塞,进入下一轮。

注:


同时运行多个订阅者测试查看此模式效果


抱歉!评论已关闭.