Spring集成ActiveMQ消息队列使用
2017-10-20 19:47
645 查看
导入maven坐标
applicationContext.xml配置
方法调用
生产者:
依赖注入:
消费者:
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>${activemq.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> </dependency>
applicationContext.xml配置
<!-- 扫描包 --> <context:component-scan base-package="com.kayo.bos.mq" /> <!-- ActiveMQ 连接工厂 --> <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供--> <!-- 如果连接网络:tcp://ip:61616;未连接网络:tcp://localhost:61616 以及用户名,密码--> <amq:connectionFactory id="amqConnectionFactory" brokerURL="tcp://localhost:61616" userName="admin" password="admin" /> <!-- Spring Caching连接工厂 --> <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory --> <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory --> <property name="targetConnectionFactory" ref="amqConnectionFactory"></property> <!-- 同上,同理 --> <!-- <constructor-arg ref="amqConnectionFactory" /> --> <!-- Session缓存数量 --> <property name="sessionCacheSize" value="100" /> </bean> <!-- 消息消费者 start--> <!-- 定义Queue监听器 --> <jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactory" acknowledge="auto"> <!-- 默认注册bean名称,应该是类名首字母小写 --> <jms:listener destination="bos_sms" ref="smsConsumer"/> </jms:listener-container> <!-- 定义Topic监听器 --> <!-- <jms:listener-container destination-type="topic" container-type="default" --> <!-- connection-factory="connectionFactory" acknowledge="auto"> --> <!-- <jms:listener destination="spring_topic" ref="topicConsumer1"/> --> <!-- <jms:listener destination="spring_topic" ref="topicConsumer2"/> --> <!-- </jms:listener-container> --> <!-- 消息消费者 end -->
方法调用
生产者:
依赖注入:
@Autowired @Qualifier("jmsQueueTemplate") private JmsTemplate jmsTemplate;
// 调用MQ服务,发送一条消息 jmsTemplate.send("bos_sms", new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { MapMessage mapMessage = session.createMapMessage(); mapMessage.setString(key1, value1); mapMessage.setString(key2, value2); return mapMessage; } });
消费者:
package com.kayo.bos.mq; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.Message; import javax.jms.MessageListener; import org.springframework.stereotype.Service; @Service("smsConsumer") public class SmsConsumer implements MessageListener { @Override public void onMessage(Message message) { MapMessage mapMessage = (MapMessage) message; try { String value1= mapMessage.getString("key1"); String value2= mapMessage.getString("key2"); } catch (JMSException e) { e.printStackTrace(); } } } }
相关文章推荐
- Spring和ActiveMQ集成实现队列消息以及PUB/SUB模型
- Activemq消息队列的集成与使用
- spring集成activemq--监听多个消息队列
- springboot 集成activeMQ实现消息队列和双向队列
- spring boot 集成activeMQ消息队列
- Spring结合嵌入式ActiveMQ使用消息队列
- 关于消息队列的使用----ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ
- 2015年12月10日 spring初级知识讲解(三)Spring消息之activeMQ消息队列
- ActiveMQ之spring集成消息转换器MessageConverter
- 在Spring下集成ActiveMQ 实现点到点的消息发送
- MQ系列3 使用Spring发送,消费topic和queue消息 activeMQ
- Windows平台下的ActiveMQ消息队列的简单使用
- 微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
- 消息队列RabbitMQ与Spring集成
- 微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
- 工业物联网或系统集成中应用消息队列(ActiveMQ,C#的demo)的场景全面分析
- java消息队列ActiveMQ的简单使用
- ActiveMQ消息队列的使用及应用
- MSMQ?不,太弱了。使用ActiveMQ实现消息队列服务
- java消息队列ActiveMQ的简单使用