Spring with RabbitMQ(数据类型转JSON)
1、pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2、订阅者
import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @Slf4j public class XxRabbitListener { @RabbitListener(queues = "xxx") public void ListenerFanoutQueue3(String msg) { log.info("消费者接收到xxx的消息【" + msg + "】"); } }
3、配置文件
# rabbitmq spring.rabbitmq.host=127.0.0.1 spring.rabbitmq.port=5672 spring.rabbitmq.username=admin spring.rabbitmq.password=xxx spring.rabbitmq.virtual-host=
4、数据类型转换配置类
如果你需要发送一个对象而不是字符串,确保你的对象可以被序列化(例如,通过实现Serializable接口),并且你的RabbitTemplate配置了正确的MessageConverter。例如,使用Jackson2JsonMessageConverter来序列化JSON数据:
import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; @Configuration public class RabbitConfig { @Bean public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) { RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory); rabbitTemplate.setMessageConverter(jsonMessageConverter()); return rabbitTemplate; } @Bean public Jackson2JsonMessageConverter jsonMessageConverter() { return new Jackson2JsonMessageConverter(new ObjectMapper()); } }
5、消息发送
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; public class MyMessageSender { @Autowired private RabbitTemplate rabbitTemplate; public void sendStringMessage(String message, String routingKey) { rabbitTemplate.convertAndSend("exchangeName", routingKey, message); } }
有些事情,没经历过不知道原理,没失败过不明白奥妙,没痛苦过不了解真谛。临渊羡鱼,不如退而结网!

浙公网安备 33010602011771号