spring amqp默认使用的是SimpleMessageConverter,使用的是UTF-8编码,官网原文是这样说的
It handles text-based content, serialized Java objects,and simple byte arrays.
当contentType是以text开头的时候,它会使用UTF-8编码将消息转换为String类型
当contentType是application/x-java-serialized-object时,它会将消息进行解序列化
JsonMessageConverter、Jackson2JsonMessageConverter将对象转换为json传递给rabbitmq
首先发送信息的applicationContext-send-messageConverter.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.4.xsd"> <rabbit:connection-factory id="connectionFactory" host="192.168.1.175" port="5672" channel-cache-size="25" /> <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" routing-key="simpleSend" message-converter="jackson2JsonMessageConverter"/> <rabbit:admin connection-factory="connectionFactory" /> <rabbit:queue name="simpleSend"/> <bean id="jackson2JsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"/> </beans>
主要是增加了jackson2JsonMessageConverter
测试发送消息
@Test public void testSend() throws InterruptedException { rabbitTemplate.convertAndSend(new Order(1, "hello")); }
打开rabbitmq管理界面,查看消息内容如下:
证明发送成功,并且是以json的方式
接下来接收消息
applicationContext-receive-messageConverter.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.4.xsd"> <rabbit:connection-factory id="connectionFactory" host="192.168.1.175" port="5672" channel-cache-size="25" /> <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" queue="simpleSend" message-converter="jackson2JsonMessageConverter"/> <rabbit:admin connection-factory="connectionFactory" /> <rabbit:queue name="simpleSend"/> <bean id="jackson2JsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"/> </beans>
测试代码:
@Test public void testReceive() throws InterruptedException { Object object=rabbitTemplate.receiveAndConvert(); if(object!=null){ log.info(object.toString()); Order order=(Order)object; log.info(order.getName()); }else{ log.info("no msg!"); } }
debug一下,成功了
相关推荐
spring amqp 配置实现rabbitmq 路由
java rabbitmq spring springAMQP 代码包 project
Spring AMQP API(Spring AMQP 开发文档).CHM 官网 Spring AMQP API。Spring AMQP 开发文档。
spring rabbitmq amqp
RabbitMq与Spring整合实例,整个工程采用maven,具体过程看博文: http://blog.csdn.net/evankaka/article/details/50495437
Spring AMQP 1.5.3版本API
一个使用springamqp实现的异步消息队列的股票系统,来自springamqp的官网,对于学习springamqp很有帮助。
Spring AMQP 2 中文 参考手册 中文文档 中文文档都是由软件翻译,翻译内容未检查校对,文档内容仅供参考。
spring amqp资源下载
spring rabbitmq rpc 测试代码
压缩包包含两部分,spring-amqp为java版的Spring AMQP的实现,spring-amqp-sample为补充版(也可作为快速入门的)
NULL 博文链接:https://wubin850219.iteye.com/blog/1076093
RabbitMQ入门 1. Java客户端——基础代码 2. Java客户端——Spring AMQP
Spring AMQP hello world
NULL 博文链接:https://wubin850219.iteye.com/blog/1050328
Spring AMQP 是基于 Spring 框架的 AMQP 消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的 POJO。同时有 Java 和 .NET 的版本。
Spring AMQP 工作队列 源码
spring-amqp 相关jar , 最近在学spring amqp是时候找jar找了好长时间,现在找全了,在这分享给大家。
使用spring amqp与rabbitmq实现的消息发送和接收。
spring amqp rabbit 标签使用