spring 集成apache qpid 简单demo
来源:互联网 发布:淘宝买的妹汁是真的吗 编辑:程序博客网 时间:2024/06/06 09:13
spring 提供spring-jms模块,用以集成JMS到spring 容器中,并提供jmsTemplate模版类来操作jms,类似集成jdbc数据库操作一样。
首先,我们新建一个applicationContext-qpid.xml来做qpid的集成操作
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="jQpidConnectionFactory"/> </bean> <!-- 链接到java broker服务器 --> <bean id="jQpidConnectionFactory" class="org.apache.qpid.client.AMQConnectionFactory"> <constructor-arg index="0" value="amqp://guest:guest@clientid/?brokerlist='tcp://localhost:5672'" /> </bean> <!-- 缓存会话,保证单链接 --> <bean id="jCachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <property name="targetConnectionFactory" ref="jQpidConnectionFactory" /> <property name="sessionCacheSize" value="1" /> <property name="reconnectOnException" value="true" /> </bean> <!-- 订阅路径 --> <bean id="jDestination" class="org.apache.qpid.client.AMQAnyDestination"> <constructor-arg index="0" value="ADDR:message_queue; {create: always}" /> </bean> <!-- 接收事件处理器 --> <bean id="jReceiver" class="com.liuxg.qpid.receiver.MsgReceiver" /> <!-- 事务处理 --> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/> <!-- 默认消息监听器 --> <bean id="deviceStatusContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jCachingConnectionFactory" /> <property name="exceptionListener" ref="jCachingConnectionFactory" /> <property name="messageListener" ref="jReceiver" /> <property name="destination" ref="jDestination" /> <property name="transactionManager" ref="transactionManager"/> </bean></beans>
然后需要把applicationContext-qpid.xml添加到web.xml的contextConfigLocation中
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:META-INF/applicationContext*.xml</param-value></context-param>
然后,在发送端,可以利用模版类发送消息
@Servicepublic class SenderService { @Autowired JmsTemplate jmsTemplate; @Autowired AMQAnyDestination deviceStatusDestination; /** * 发送消息 */ public void sendMsg(){ jmsTemplate.send(deviceStatusDestination, new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { return session.createTextMessage("hello world !!"); } }); }}
这里发送的时候,可以利用spring的消息转化器,它支持String 和TextMessage, byte[] 和BytesMesssage还有java.util.Map 和 MapMessage的相互转化,例如下面
public void sendWithConversion() { Map map = new HashMap(); map.put("Name", "Mark"); map.put("Age", new Integer(47)); jmsTemplate.convertAndSend("testQueue", map, new MessagePostProcessor() { public Message postProcessMessage(Message message) throws JMSException { message.setIntProperty("AccountID", 1234); message.setJMSCorrelationID("123-00001"); return message; } });}
最后在接收端,可以定义一个类实现SessionAwareMessageListener或者DeviceStatusReceiver,这里我们实现SessionAwareMessageListener
public class MsgReceiver implements SessionAwareMessageListener<Message> { @Override public void onMessage(Message message, Session session) throws JMSException { JMSTextMessage xx = (JMSTextMessage) message; String text = xx.getText(); System.out.println(text); }}
0 0
- spring 集成apache qpid 简单demo
- apache shiro+spring简单集成
- Apache Qpid深入介绍
- Apache Qpid Java实战
- Quartz 集成Spring实现简单的任务调度Demo
- spring+apache shiro demo
- QPID例子一(DEMO)
- QPID例子二(DEMO)
- qpid之简单实例
- 基于spring框架的apache shiro简单集成
- Apache Shiro 集成-spring
- Apache Shiro 集成-spring
- Spring+Apache CXF集成
- 消息中间件 Apache Qpid 简介
- 消息中间件 Apache Qpid 简介
- Apache QPID windows vs2010编译
- 消息中间件 Apache Qpid 简介
- spring+tomcat6+jndi集成demo
- 面向对象中的设计模式
- 通过案例对SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶之Job和容错
- [模式识别]条件随机场CRF(ConditionalRandomField)
- 项目3-警察和厨师(1)
- 观察者模式_起到控制器的作用
- spring 集成apache qpid 简单demo
- socket通信代码例子
- 15 个 Android 通用流行框架大全
- 遍历Map的四种方法
- jsp 资料
- Spring MVC 4 文件下载实例(带源码)
- 用RaspberryPi2打造自己的静音PC
- alfred
- 【DSP开发】【VS开发】PCIE设备扫描过程