SpringBoot整合ActiveMq实现Queue和Topic两种模式
文章目录
一、前言
二、ActiveMq的下载和使用
三、依赖准备
四、yml文件配置
五、配置Bean
六、创建生产者(Queue+Topic)
七、创建消费者(Topic模式下)
八、测试结果(Topic模式下)
九、ActiveMq网页版查看是否成功(Topic模式下)
十、创建消费者(Queue模式下)
十一、测试结果(Queue模式下)
十二、ActiveMq网页版查看是否成功(Queue模式下)
十三、总结
一、前言
最近小编在学习消息队列,然后选中了ActiveMq,来进行学习.于是探索了好久,来整理一下自己的学习心得!大家一起学习,希望对你有用.我把一些我自己的理解写在注释里了注意看!!
二、ActiveMq的下载和使用
下载
大家直接下载解压就可以使用了—>
链接:https://pan.baidu.com/s/1W0MZtQAya0mOEKMWqJK1iA
提取码:29mz
使用
三、依赖准备
<!-- activemq --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
四、yml文件配置
spring: activemq: broker-url: tcp://127.0.0.1:61616 user: admin password: admin jms: pub-sub-domain: true # 默认为false:queue true:topic queue: queue_mq # 点对点消费名字 topic: topic_mq # 订阅式消费名字
五、配置Bean
import org.apache.activemq.command.ActiveMQQueue; import org.apache.activemq.command.ActiveMQTopic; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.annotation.EnableJms; import javax.jms.Queue; import javax.jms.Topic; @Configuration @EnableJms public class ActiveMqConfig { @Value("${queue}")//对应yml文件中定义的queue private String queue; @Value("${topic}")//对应yml文件中定义的topic private String topic; /** * 创建点对点的队列 一个消息只能被一个消费者消费 --- 一对一 * @return */ @Bean public Queue queue(){ return new ActiveMQQueue(queue); } /** * 创建订阅式的队列 一个消息可以被多个消费者消费 --- 一对多 * @return */ @Bean public Topic topic(){ return new ActiveMQTopic(topic); } }
六、创建生产者(Queue+Topic)
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsMessagingTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.jms.Queue; import javax.jms.Topic; @RestController public class ProducerController { @Autowired private Queue queue; @Autowired private Topic topic; @Autowired private JmsMessagingTemplate jmsMessagingTemplate; /** * 点对点的消息队列的生产者 * @param string */ @GetMapping("/queue") public void sendMsgQueue(@RequestParam String string){ System.out.println("消息已经发送,准备被消费,消息为 ---> "+string); jmsMessagingTemplate.convertAndSend(queue,string); } /** * 一对多的消息队列的生产者 * @param string */ @GetMapping("/topic") public void sendMsgTopic(@RequestParam String string){ System.out.println("消息已经发送,准备被消费,消息为 ---> "+string); jmsMessagingTemplate.convertAndSend(topic,string); } }
七、创建消费者(Topic模式下)
import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class TopicConsumer { /** * 监听消息,名字为生产者发送的名字,要一致,不然监听不到. * 因为是订阅者模式,可以有多个消费者,我们这里举两个来进行测试 * @param string */ @JmsListener(destination = "${topic}") public void consumerTopicOne(String string){ System.out.println("我是消费者一号:消费消息成功,信息为---> "+string); } @JmsListener(destination = "${topic}") public void consumerTopicTwo(String string){ System.out.println("我是消费者二号:消费消息成功,信息为---> "+string); } }
八、测试结果(Topic模式下)
九、ActiveMq网页版查看是否成功(Topic模式下)
网站地址 http://127.0.0.1:8161/admin/ 账号密码都是admin
十、创建消费者(Queue模式下)
首先把yml文件中的配置修改为Queue:pub-sub-domain: false
import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class QueueConsumer { /** * 监听消息,名字为生产者发送的名字,要一致,不然监听不到. * 因为是队列模式,只能消费者 * @param string */ @JmsListener(destination = "${queue}") public void consumerQueue(String string){ System.out.println("消费消息成功,信息为---> "+string); } }
十一、测试结果(Queue模式下)
十二、ActiveMq网页版查看是否成功(Queue模式下)
十三、总结
这样我们就搭建好了,并且测试没有问题,有问题留言哦.比较合适刚刚学习的童鞋们,期待您的关注,一起学习,一起提高哦!!!