设为首页 收藏本站
查看: 699|回复: 0

[经验分享] Apache ActiveMQ 介绍

[复制链接]

尚未签到

发表于 2016-12-30 10:22:45 | 显示全部楼层 |阅读模式
一、下载部署

1、下载

http://activemq.apache.org/

2、安装

直接解压至任意目录

3、启动ActiveMQ服务器

直接运行bin\activemq.bat

4、ActiveMQ消息管理后台系统:
http://localhost:8161/admin
user/password:  admin/admin

二、运行附带的示例程序

1、Queue消息示例:

* 启动Queue消息消费者

cd example

ant consumer

* 启动Queue消息生产者

cd example

ant producer

简要说明:生产者(producer)发消息,消费者(consumer)接消息,发送/接收2000个消息后自动关闭

2、Topic消息示例:

* 启动Topic消息消费者

cd example

ant topic-listener

* 启动Topic消息生产者

cd example

ant topic-publisher

简要说明:重复10轮,publisher每轮发送2000个消息,并等待获取listener的处理结果报告,然后进入下一轮发送,最后统计全局发送时间。


三、Point-to-Point (点对点)消息模式开发流程

1、生产者(producer)开发流程(ProducerTool.java):

1.1 创建Connection:

根据url,user和password创建一个jms Connection。

1.2 创建Session:

在connection的基础上创建一个session,同时设置是否支持事务和ACKNOWLEDGE标识。

1.3 创建Destination对象:

需指定其对应的主题(subject)名称,producer和consumer将根据subject来发送/接收对应的消息。

1.4 创建MessageProducer:

根据Destination创建MessageProducer对象,同时设置其持久模式。

1.5 发送消息到队列(Queue):

封装TextMessage消息,使用MessageProducer的send方法将消息发送出去。


2、消费者(consumer)开发流程(ConsumerTool.java):

2.1 实现MessageListener接口:

消费者类必须实现MessageListener接口,然后在onMessage()方法中监听消息的到达并处理。

2.2 创建Connection:

根据url,user和password创建一个jms Connection,如果是durable模式,还需要给connection设置一个clientId。

2.3 创建Session和Destination:

与ProducerTool.java中的流程类似,不再赘述。

2.4创建replyProducer【可选】:

可以用来将消息处理结果发送给producer。

2.5 创建MessageConsumer:

根据Destination创建MessageConsumer对象。

2.6 消费message:

在onMessage()方法中接收producer发送过来的消息进行处理,并可以通过replyProducer反馈信息给producer

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

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反馈信息并解除线程堵塞,进入下一轮。

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-321511-1-1.html 上篇帖子: apache time_wait 下篇帖子: 【转】Apache CXF
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表