慕函数1174211
2018-09-18 13:22
先运行consumer端,运行成功,rabbitmq有写入exchange和queue,接着运行producer端的测试程序,consumer端这边报错。
两边均有implements序列化接口,但是只要运行测试就报序列化出问题!!!
第一次是照着老师的步骤没发现问题,后来是自己重新做一遍的时候试了很长时间都是报这个错,心累....
Caused by: org.springframework.amqp.support.converter.MessageConversionException: failed to convert serialized Message content
没想到 是包名的问题。。。必须统一,序列化id还必须一致。。。
有点坑.....
包名必须要一样。这个太狠了。不知道什么梗
在Util里建立一个类,把发送和接收端的Order对象转化为JSON再发到队列里/再监听。然后转化一下。
参考下https://www.toutiao.com/i6609789756479898116/ 我也是百度到的
核心就是
方案1、消费者引用生产者项目中的消息体即Order.java
在消费者项目上【右键】->【Bulid Path】->【Configure Build Path】->【Projects】->【Add】 选择生产者项目,然后消费者项目就可以引用生产者项目中类,这样完全保证了两个项目中JavaBean是一致的,所以能解决反序列失败的问题
方案2、生产者在发送消息前将消息体转换为JSONObject,消费者以JSONObject接收消息,再转换为对应的JavaBean
是包名的问题。。。必须统一,序列化id还必须一致。。。
RabbitMQ消息中间件极速入门与实战
42103 学习 · 143 问题
相似问题
回答 3
回答 5
回答 2
回答 4
回答 2