实力干货!SpringBoot JMS(ActiveMQ) 使用实践

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

ActiveMQ

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

spring

2. 启动后会有以下提示

spring

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

spring

springboot连接ActiveMQ

1. 加入依赖:

spring-boot-starter-activemq

2. 配置连接属性:

spring

消息的发送和接收

生产者/消费者模式

1. 创建生产者

spring

2. 创建消费者

spring

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

3. 测试类

spring

4. 运行测试

spring

发布/订阅模式

1. 发布话题

spring

2. 订阅话题

spring

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

spring

3. 测试

spring

spring

应用

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

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

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

spring

spring

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

spring

spring

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

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

spring

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

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

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

spring

spring

spring

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

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

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

以上所述是小编给大家介绍的Spring Boot 模块组成,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的!

 Java学习资料(复制下段链接至浏览器即可)
data:textml;charset=UTF-8;base64,5oGt5Zac5L2g77yM5p625p6E5biI5a2m5Lmg576k5Y+35pivNjg2NTc5MDE0Cg==


  • 2
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
在Spring Boot中使用ActiveMQ,你需要添加ActiveMQ依赖项并配置相关的参数。下面是使用ActiveMQ的步骤: 1. 首先,在`pom.xml`文件中添加ActiveMQ依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> ``` 2. 在`application.properties`(或`application.yml`)文件中配置ActiveMQ的连接信息,例如: ```properties spring.activemq.broker-url= tcp://localhost:61616 spring.activemq.user= admin spring.activemq.password= password ``` 根据你的实际情况修改上述参数。 3. 创建一个消息生产者,发送消息到ActiveMQ队列或主题。示例代码如下: ```java import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Component; import javax.jms.Queue; @Component public class MessageProducer { private final JmsTemplate jmsTemplate; private final Queue queue; public MessageProducer(JmsTemplate jmsTemplate, Queue queue) { this.jmsTemplate = jmsTemplate; this.queue = queue; } public void sendMessage(String message) { jmsTemplate.convertAndSend(queue, message); } } ``` 你可以使用`JmsTemplate`来发送消息到队列。 4. 创建一个消息消费者,从ActiveMQ队列或主题接收消息。示例代码如下: ```java import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class MessageConsumer { @JmsListener(destination = "myQueue") public void receiveMessage(String message) { System.out.println("Received message: " + message); } } ``` 使用`@JmsListener`注解来监听指定的队列,并在接收到消息时执行对应的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值