二、在Idea上实践RabbitMQ(二)
本节内容:消息转换器
核心知识点
- rabbitmq消息转换器默认是SimpleMessageConvert,里面用的是JDK默认的序列化objectOutputStream.write(object)得到byte[]
问题:体积大、可读性低、安全漏洞(字节码可变) - JSON序列化代替默认JDK序列化
rabbitmq内部提供JSON序列化的消息转换器Jackson2JsonMessageConverter,只不过没有导入依赖
流程:导入依赖-选择Jackson作为消息转换器
启动类/配置类 里注册Jackson2JsonMessageConverter<!--Jackson--> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </dependency>
注意事项:@Bean public MessageConverter jacksonMessageconvertor(){ Jackson2JsonMessageConverter jjmc = new Jackson2JsonMessageConverter(); jjmc.setCreateMessageIds(true); //开启唯一消息Id,之前在mq连接失败中也有个唯一消息Id,但是那个太消耗性能。这里开启Id是为了方便之后的消费者进行幂等操作 return jjmc; }
选择JSON序列化,生产者发送的消息就必须使用可以转换成JSON格式的类型,接受也必须使用对应的类型接受
生产者和消费者必须使用同一个消息转换器
下一节