目录
1. 报错的背景
a)使用 RabbitMQ 发送消息时,发送消息的类型为 Map<String, Object>,map 里面我 put 了一个 <String, Long> 类型,如下图:

b)这里有一个前提:我清楚使用 org.springframework.amqp.rabbit.core.RabbitTemplate 来发送消息到 RabbitMQ 队列时,消息的序列化是由 MessageConverter 完成的。默认情况下,RabbitTemplate 使用 SimpleMessageConverter,基于JDK的ObjectOutputStream完成序列化。
但是这样的数据就有可能引发以下两种问题:
- 转化后数据过长,影响传输效率。
- 容易引发 sql 注入问题。
因此这里我使用 Jackson 库将对象序列化为 JSON 格式,如下消息转化器配置
<dependency>

文章讲述了在使用RabbitMQ发送Map<String,Object>消息时,遇到因Long类型导致的序列化问题。作者通过分析发现Jackson库的消息转化器存在问题,提供了两种解决方案:一是转换为字符串避免直接强转,二是使用ObjectMapper进行手动序列化和反序列化。
订阅专栏 解锁全文
956

被折叠的 条评论
为什么被折叠?



