rabbitmq序列化
JacksonMessageConverter

package com.hainei.config; /** * @author: wq * @date: 2024-04-08 17:30 * @description: */ import org.springframework.amqp.core.Message; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; public class JacksonMessageConverter extends Jackson2JsonMessageConverter { public JacksonMessageConverter() { super(); } @Override public Object fromMessage(Message message) { message.getMessageProperties().setContentType("application/json"); return super.fromMessage(message); } }
RabbitConfig

package com.hainei.config; import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.amqp.rabbit.connection.ConnectionFactory; /** * @author: wq * @date: 2024-04-08 16:39 * @description: */ @Configuration public class RabbitConfig { @Bean public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) { RabbitTemplate template = new RabbitTemplate(); template.setConnectionFactory(connectionFactory); template.setMessageConverter(new Jackson2JsonMessageConverter()); return template; } /** * template.setMessageConverter(new Jackson2JsonMessageConverter()); * 这段和上面这行代码解决RabbitListener循环报错的问题 */ @Bean public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setMessageConverter(new JacksonMessageConverter()); return factory; } }
消费端也可以直接设置contentType

package com.hainei.consumer; import com.hainei.constant.RabbitConstant; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.*; import org.springframework.stereotype.Component; import java.util.Map; /** * @author admin */ @Component public class RabbitReceiver { @RabbitListener(queues = RabbitConstant.CanalQueue) @RabbitHandler public void process(Message msg) { msg.getMessageProperties().setContentType("application/json"); System.out.println(msg); } }
个人学习笔记,记录日常学习,便于查阅及加深,仅为方便个人使用。