根据视频写的代码,无法序列化

来源:2-4 RabbitMQ整合SpringBoot2-消费端处理消息-2

慕函数1174211

2018-09-18 13:22

先运行consumer端,运行成功,rabbitmq有写入exchange和queue,接着运行producer端的测试程序,consumer端这边报错。

https://img1.mukewang.com/5ba08b220001e54f08730147.jpg

https://img3.mukewang.com/5ba08b2b000178e817940789.jpg

https://img3.mukewang.com/5ba08b510001c58b07550354.jpg

https://img1.mukewang.com/5ba08b5200017f9908280301.jpg

两边均有implements序列化接口,但是只要运行测试就报序列化出问题!!!


写回答 关注

4回答

  • qq_慕仙9574458
    2019-09-15 20:23:32

    第一次是照着老师的步骤没发现问题,后来是自己重新做一遍的时候试了很长时间都是报这个错,心累....

    Caused by: org.springframework.amqp.support.converter.MessageConversionException: failed to convert serialized Message content

    没想到  是包名的问题。。。必须统一,序列化id还必须一致。。。  

    有点坑.....

  • MI_Report
    2019-05-06 19:58:06

    包名必须要一样。这个太狠了。不知道什么梗

  • keZcf2
    2018-11-27 20:45:28

    在Util里建立一个类,把发送和接收端的Order对象转化为JSON再发到队列里/再监听。然后转化一下。

    参考下https://www.toutiao.com/i6609789756479898116/ 我也是百度到的

    核心就是

    方案1、消费者引用生产者项目中的消息体即Order.java

    在消费者项目上【右键】->【Bulid Path】->【Configure Build Path】->【Projects】->【Add】 选择生产者项目,然后消费者项目就可以引用生产者项目中类,这样完全保证了两个项目中JavaBean是一致的,所以能解决反序列失败的问题

    方案2、生产者在发送消息前将消息体转换为JSONObject,消费者以JSONObject接收消息,再转换为对应的JavaBean

  • 慕函数1174211
    2018-09-18 13:27:16

    是包名的问题。。。必须统一,序列化id还必须一致。。。

    须木一瓜

    包名还有相同?

    2018-11-14 16:08:21

    共 1 条回复 >

RabbitMQ消息中间件极速入门与实战

入门RabbitMQ,并整合SpringBoot2.x,实现100%消息的可靠性投递!

42103 学习 · 143 问题

查看课程

相似问题