采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,你好,我生产端的 Order 实体的路径为com.bfxy.springboot.entity.Order, 消费端 Order实体路径 为 com.wxmp.entity.Order, 这两个实体路径不一致。 我的问题是: 这两个实体路径一定要一致吗,如果不需要一定一致那需要怎么改呢?
生产端:
消费端
这个问题是因为默认的MessageConverter转换的时候,要求这两个实体路径一定要一致,不然会出错。详情你可以看看这篇文章 https://www.jianshu.com/p/f94b2e8be0a9
当然生产端和消费端的消息实体也可以不一致的。我是这么做的,在消费端和生产端都配置自定义MessageConverter,使用FastJson进行消息体的转换。
老哥,我配置了这个类还是不行,会报错,你遇到过没有? Caused by: org.springframework.messaging.converter.MessageConversionException: Cannot convert from [com.alibaba.fastjson.JSONObject] to [com.lin.consumer.entity.Order]
没有。。。
你光配置这个类就行了吗?发送方和消费方有没有其他的代码更改呢?谢谢啦
回复楼上一位同学的问题。。。PS.补充消息发送与接收代码
回答楼上一位同学的问题
自定义MessageConverter
使用自己自定义的MessageConverter
生产端和消费端实体类的包名改成一直,譬如都为com.bfxy.springboot.entity.Order或者都为 com.wxmp.entity.Order 是消费端拋的异常,生产端其实已经将消息成功发出去了,消费端在接收消息实体类的时候不是加了一个@payload的注解吗?这两个实体类不是都继承了serializable接口吗,主要是用来类在传输的时候的序列化和反序列化的,具体为什么包名不一样就不能被反序列化我就不是很清楚了
登录后可查看更多问答,登录/注册
从0到1,全面深入掌握RabbitMQ消息中间件技术
1.4k 14
3.2k 13
1.7k 11
1.0k 9
1.4k 9