博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot集成activeMQ
阅读量:4328 次
发布时间:2019-06-06

本文共 3785 字,大约阅读时间需要 12 分钟。

https://blog.csdn.net/qincidong/article/details/76114434

 

SpringBoot集成activeMQ

1.添加依赖:

org.springframework.boot
spring-boot-starter-activemq
org.apache.activemq
activemq-pool
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.在application.properties中加入activemq的配置

spring.activemq.broker-url=tcp://192.168.74.135:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.pool.enabled=true spring.activemq.pool.max-connections=50 spring.activemq.pool.expiry-timeout=10000 spring.activemq.pool.idle-timeout=30000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.创建一个消息生产者

@Componentpublic class JMSProducer { @Autowired private JmsTemplate jmsTemplate; public void sendMessage(Destination destination,String message) { this.jmsTemplate.convertAndSend(destination,message); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4.创建一个消息消费者

@Componentpublic class JMSConsumer { private final static Logger logger = LoggerFactory.getLogger(JMSConsumer.class); @JmsListener(destination = "springboot.queue.test") public void receiveQueue(String msg) { logger.info("接收到消息:{}",msg); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

5.测试类

public class JmsTest extends BaseTest{ @Autowired private JMSProducer jmsProducer; @Test public void testJms() { Destination destination = new ActiveMQQueue("springboot.queue.test"); for (int i=0;i<10;i++) { jmsProducer.sendMessage(destination,"hello,world!" + i); } } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

BaseTest代码如下:

@RunWith(SpringRunner.class)@SpringBootTest(classes = com.sample.activity.web.Application.class)public abstract class BaseTest { }
  • 1
  • 2
  • 3
  • 4

6.发送和接收TOPIC消息

默认只能发送和接收queue消息,如果要发送和接收topic消息,需要在application.properties文件中加入:

spring.jms.pub-sub-domain=true
  • 1

发送和接收的代码同queue一样。 

但是这样有另外一个问题:无法发送和接收queue消息。那么如何同时支持发送和接收queue/topic消息呢?

7.支持同时发送和接收queue/topic

i. 新建一个JMS的配置类:

@Configurationpublic class JmsConfig { public final static String TOPIC = "springboot.topic.test"; public final static String QUEUE = "springboot.queue.test"; @Bean public Queue queue() { return new ActiveMQQueue(QUEUE); } @Bean public Topic topic() { return new ActiveMQTopic(TOPIC); } // topic模式的ListenerContainer @Bean public JmsListenerContainerFactory
jmsListenerContainerTopic(ConnectionFactory activeMQConnectionFactory) { DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory(); bean.setPubSubDomain(true); bean.setConnectionFactory(activeMQConnectionFactory); return bean; } // queue模式的ListenerContainer @Bean public JmsListenerContainerFactory
jmsListenerContainerQueue(ConnectionFactory activeMQConnectionFactory) { DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory(); bean.setConnectionFactory(activeMQConnectionFactory); return bean; } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

ii. 消息消费者的代码改成如下:

@Componentpublic class JMSConsumer { private final static Logger logger = LoggerFactory.getLogger(JMSConsumer.class); @JmsListener(destination = JmsConfig.TOPIC,containerFactory = "jmsListenerContainerTopic") public void onTopicMessage(String msg) { logger.info("接收到topic消息:{}",msg); } @JmsListener(destination = JmsConfig.QUEUE,containerFactory = "jmsListenerContainerQueue") public void onQueueMessage(String msg) { logger.info("接收到queue消息:{}",msg); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

可以看到,这里指定了ConnectionFactory。

iii. 测试类:

public class JmsTest extends BaseTest{ @Autowired private JMSProducer jmsProducer; @Autowired private Topic topic; @Autowired private Queue queue; @Test public void testJms() { for (int i=0;i<10;i++) { jmsProducer.sendMessage(queue,"queue,world!" + i); jmsProducer.sendMessage(topic, "topic,world!" + i); } } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

springboot中activemq的一些配置属性参考:

转载于:https://www.cnblogs.com/ruiati/p/8984303.html

你可能感兴趣的文章
万方数据知识平台 TFHpple +Xpath解析
查看>>
Hive实现oracle的Minus函数
查看>>
秒杀多线程第四篇 一个经典的多线程同步问题
查看>>
RocketMQ配置
查看>>
vs code调试console程序报错--preLaunchTask“build”
查看>>
蚂蚁金服井贤栋:用技术联手金融机构,形成服务小微的生态合力
查看>>
端口号大全
查看>>
机器学习基石笔记2——在何时可以使用机器学习(2)
查看>>
POJ 3740 Easy Finding (DLX模板)
查看>>
MySQL 处理重复数据
查看>>
关于typedef的用法总结(转)
查看>>
【strtok()】——分割字符串
查看>>
Linux下安装rabbitmq
查看>>
曹德旺
查看>>
【转】判断点在多边形内(matlab)
查看>>
java基础之集合:List Set Map的概述以及使用场景
查看>>
Python 线程 进程 协程
查看>>
iOS语言中的KVO机制
查看>>
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
查看>>
响应式web设计之CSS3 Media Queries
查看>>