springboot集成activeMQ
来源:互联网 发布:怎么看懂行情数据图 编辑:程序博客网 时间:2024/05/29 12:46
SpringBoot集成activeMQ
1.添加依赖:
<!-- activemq --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId></dependency><dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId></dependency>
2.在application.properties中加入activemq的配置
spring.activemq.broker-url=tcp://192.168.74.135:61616spring.activemq.user=adminspring.activemq.password=adminspring.activemq.pool.enabled=truespring.activemq.pool.max-connections=50spring.activemq.pool.expiry-timeout=10000spring.activemq.pool.idle-timeout=30000
3.创建一个消息生产者
@Componentpublic class JMSProducer { @Autowired private JmsTemplate jmsTemplate; public void sendMessage(Destination destination,String message) { this.jmsTemplate.convertAndSend(destination,message); }}
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); }}
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); } }}
BaseTest代码如下:
@RunWith(SpringRunner.class)@SpringBootTest(classes = com.sample.activity.web.Application.class)public abstract class BaseTest {}
6.发送和接收TOPIC消息
默认只能发送和接收queue消息,如果要发送和接收topic消息,需要在application.properties文件中加入:
spring.jms.pub-sub-domain=true
发送和接收的代码同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; }}
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); }}
可以看到,这里指定了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); } }}
springboot中activemq的一些配置属性参考:springboot activemq配置属性
阅读全文
0 1
- SpringBoot集成ActiveMQ
- Springboot集成activemq
- springboot集成activeMQ
- SpringBoot集成ActiveMQ
- SpringBoot 集成 activeMQ
- [ActiveMQ][SpringBoot]SpringBoot中集成ActiveMQ
- springboot集成activemq,超赞!!!
- springboot 系统学习5 集成 activemq
- 【Demo】springboot微服务+activemq消息中间件集成
- SpringBoot-ActiveMq
- springboot activemq
- Java ActiveMQ简介以及springboot集成activeMQ实现消息队列监听以及实现MQ延迟
- activeMq集成
- ActiveMQ消息中间件 原理详解 &&附demo实现、以及与springboot集成的demo
- springboot、mybatis、activemq整合
- SpringBoot 整合 Apache ActiveMQ
- springboot整合activeMQ
- springboot整合activemq
- LA 4987 n个人要到m个避难所 每个避难所最少一人 求所用最短距离
- c++中 override 和 overLoad的区别
- ArcGIS Flex中获取graphic中心点
- js判断页面输入框未输入内容或者输入的内容为空格
- solr的部署
- springboot集成activeMQ
- #2017 Multi-University Training Contest
- eclipse导出javadoc文档
- 红黑树的基本操作
- htmlunit中 java.lang.NoClassDefFoundError: org/apache/http/cookie/CookieSpecProvider 异常
- C++第六章语句
- require开发:require入门及实例分析
- LaTex错误集锦
- 鸟哥的Linux私房菜 基础篇 第三版 学习笔记 序