先写现象:在springboot(2.1.8稳定版)整合rabbitmq时,使用rabbitTemplate模板类发送消息进入队列中去时发现没有展示中文,
使用浏览器查看rabbitmq Management Web查看刚才发送的消息:
为什么造成这种疑似乱码的消息内容呢?
从这个图可以看到,我们可以看到rabbitmq默认使用的是SimpleMessageConverter,这个类是MessageConver的隔代子类,下面是继承关系:
在messageConvert在进行序列化时会调用fromMessage这个方法:
,而SimpleMessageConverter重写了这个方法:
这个方法就是使用了jdk的序列化方式,现在我们知道了上面这个问题是如何产生了的,那么该如何解决呢?
解决办法:既然messageConver有很多子类,我们可以使用一个子类来构造messageConver(参见第三张结构关系图),这里我使用了Jackson2JsonMessageConverter来进行构造,
接下来可以看自动配置类:
如果你自己配置了messageconver类,他就不会为空,就会使用你自己的配置。改造完成后可以看看效果:
可以看到这个类的实现已经被成功替换成Jackson2JsonMessageConverter了,