activemq消息转换器MessageConverter
来源:互联网 发布:versions 1.7 for mac 编辑:程序博客网 时间:2024/06/06 05:41
==MessageConverter的作用主要有两方面,一方面它可以把我们的非标准化Message对象转换成我们的目标Message对象,这主要是用在发送消息的时候;另一方面它又可以把我们的Message对象转换成对应的目标对象,这主要是用在接收消息的时候。==
<!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 --> <property name="connectionFactory" ref="connectionFactory"/> </bean>
在以上spring整合activemq的时候,我们发送消息是这样的
jmsTemplate.send(destination, new MessageCreator() { public Message createMessage(Session session) throws JMSException { ObjectMessage objMessage = session.createObjectMessage(obj); return objMessage; }
每次发送都需要定义一个内部类来申明这个message的类型,很麻烦
我们定义一个类型转换器,就能知道发送的数据的类型是ObjectMessage还是TextMessage
public class AMessageConverter implements MessageConverter { public Message toMessage(Object object, Session session) throws JMSException, MessageConversionException { return session.createObjectMessage((Serializable) object); } public Object fromMessage(Message message) throws JMSException, MessageConversionException { ObjectMessage objMessage = (ObjectMessage) message; return objMessage.getObject(); }}
重新整合jms
<!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 --> <property name="connectionFactory" ref="connectionFactory"/> <property name="messageConverter" ref="aMessageConverter"/></bean> <!-- 类型转换器 --><bean id="aMessageConverter" class="com.xxx.activemq.AMessageConverter"/>
这样我们调用jmsTemplate发送消息就会变得很简单
jmsTemplate.convertAndSend(destination, obj);//他会将obj类型转化成一个序列化的ObjectMessage类型进行发送
当然这个转换器除了能将java类转化成指定的Message.还能在类中手工调用,将监听接收到的消息转化成我们指定的对象
<!-- 消息监听器 --> <bean id="consumerMessageListener" class="com.xxx.activemq.ConsumerMessageListener"> <property name="messageConverter" ref="aMessageConverter"/> </bean>
private MessageConverter MessageConverter; public void onMessage(Message message) { if (message instanceof ObjectMessage) { ObjectMessage objMessage = (ObjectMessage) message; try { AMMessage msg = messageConverter.fromMessage(objMessage);//Ammessage是我们自己定义某种规范用来传输的类 } catch (JMSException e) { e.printStackTrace(); } } }
0 0
- activemq消息转换器MessageConverter
- ActiveMQ之spring集成消息转换器MessageConverter
- 消息转换器MessageConverter
- ActiveMQ - stomp 通过自定义转换器来支持 Map 消息传递
- 消息转换器
- 消息转换器HttpMessageConverter
- 消息转换器HttpMessageConverter
- HttpMessageConverter消息转换器
- SpringMvc 消息转换器
- 自定义实现消息转换器
- springMVC配置消息转换器
- 实现SpringMvc消息转换器
- SpringMvc自定义消息转换器
- SpringMvc自定义消息转换器
- Springboot 自定义消息转换器
- ActiveMQ消息特性:消息属性
- java中的消息转换器--HttpMessageConverter
- SpringMVC源码-消息转换器HttpMessageConverter
- 伍华聪架构思路
- 程序员技术练级攻略
- C语言中函数参数入栈的顺序
- 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll模型
- Leetcode 6. ZigZag Conversion
- activemq消息转换器MessageConverter
- java.lang.IllegalStateException: getOutputStream() has already been called for this response
- 2016年国内某知名互联网公司PHP面试题及答案
- 关于jffs2文件系统如何掉电保护
- 神经网络+深度学习+增强学习
- AHU-61 Lake Counting (并查集)
- VLAN测试小结
- windows下的redis安装
- MySQL 5.7.3 Milestone 13 版本发布及下载地址