说明,在SpringAMQP的发送方法中,接收消息的是Object类型,也就是说我们可以发送热议对象类型的消息,SpringAMQP会帮我们序列化为字节发送。
但是要是直接发送object类型的数据的话用的是jdk默认序列化,容易出现错误而且你查看数据也会发现一堆看不懂的东西。
解决问题(消息转换器)
- 在我们的publisher服务引入依赖(也可以在父工程中引入)
<!--jackson依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
- 在我们的publisher服务声明MessageConverter(翻译:消息转换器)类型的Bean(我是在启动类声明的):
@Bean
public MessageConverter messageConverter() {
return new Jackson2JsonMessageConverter();
}
下面是一段publisher和consumer服务的基本代码这里就不做解释了:
@RabbitListener(queues = "object.queue") //consumer代码
public void listenObjectQueue(Map<String, Object> msg) {
System.out.println("接收到object。queue的消息:"+msg);
}
@Test
public void testSendObjectQueue() {
Map<String, Object> msg = new HashMap<>();
msg.put("name","xxx");
msg.put("age", 999);
rabbitTemplate.convertAndSend("object.queue", msg);
}
运行结果如下(在mq中也能正常显示):