专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
程序员的那些事  ·  趣图:今天还不是时候 ·  21 小时前  
OSC开源社区  ·  祖师爷Linus被内核维护者整烦了,别再被b ... ·  4 天前  
OSC开源社区  ·  Python正式发布年度大更新3.13.0: ... ·  6 天前  
OSC开源社区  ·  淘宝程序员是不是没活硬整? ·  1 周前  
赛尔实验室  ·  CCIR 2024 会议大会主旨报告预告 ... ·  1 周前  
51好读  ›  专栏  ›  OSC开源社区

SpringBoot JMS(ActiveMQ) 使用实践

OSC开源社区  · 公众号  · 程序员  · 2017-11-06 08:34

正文


扫描二维码或点击图片进入西安源创会报名


摘要: 本文介绍ActiveMQ在SpringBoot中的使用,其中配置都基于注解


ActiveMQ


1. 下载windows办的activeMQ后,在以下目录可以启动:


    


2. 启动后会有以下提示


    


3. 所以我们可以通过http://localhost:8161访问管理页面,通过tcp://localhost:61616来连接消息服务器,用到的用户名和密码都在以下文件中(默认为admin=admin)


    


springboot连接ActiveMQ


1. 加入依赖:


            spring-boot-starter-activemq


2. 配置连接属性:



消息的发送和接收


生产者/消费者模式


1. 创建生产者



2. 创建消费者



注意: @JmsListener是一个可重复的注解,在java7及以下版本jdk中,可以使用@JmsListeners代替它。


3. 测试类



4. 运行测试



发布/订阅模式


1. 发布话题



2. 订阅话题



注意: 在pub/sub模式中,对消息的监听需要对containerFactory进行以下配置



3. 测试




应用


按照以上步骤,在springboot中很容易就实现类两种模式的消息发送和接收。但是jms具体的应用场景是在不同的应用程序之间,生产者和消费者往往是在不同的应用中的。此外,以上例子中的消息我们只发送字符串,其实还可以发送Object类型的消息,甚至可以使用messageCreator自定义消息的转换,而不使用convertAndSend方法默认转换。


多个应用程序之间发送消息


1. 先使用一个只有发送者,没有消费者或订阅者的应用发送两类消息各十条


    

    


2. 我们打开localhost:8161,可以看到


    

    


两类都曾有十条消息入队,但只有queues中还存留10条消息。


3. 现在我们启动包含消费者和订阅者的应用程序


    


果然,只有消费者收到了queues中的消息。


这说明订阅者接收topic是需要在topic发布之前订阅;而生产/消费模式下,消息发出后会存放在队列中,等待消费者消费。


4. 我们先启动两个包含订阅者和消费者的程序,再发布消息


    

    

    


两个订阅者都收到 topic message 1~9, 而消费者中,一个收到消息 1、3、5、7、9,另一个收到0、2、4、6、8。


这说明有多个消息接收者时,生产/消费模式下多个消费者会轮流消费队列中的消息,而pub/sub模式下所有订阅者都会得到所有的消息。


以上就是在多个应用程序之间验证了发布/订阅模式和生产/消费模式的不同特点。



推荐阅读

Kotlin 一统天下?Kotlin/Native 开始支持 iOS 和 Web 开发

开发者最讨厌的编程语言:PHP、Ruby 中枪

用 Go 语言编写一门工具的终极指南

带来高收入的 10 大开源技术,可以涨工资了!

娱乐开发两不误,10 大开源游戏框架推荐

点击“阅读原文”查看更多精彩内容