使用
RabbitMQ直接被SpringBoot支持,使用是非常的方便。具体只需要做三件事:
在SpringBoot项目文件中引入消息队列的库
compile("org.springframework.boot:spring-boot-starter-amqp")
// 或者
compile('org.springframework.cloud:spring-cloud-starter-bus-amqp')
添加RabbitMQ的登录配置
spring.rabbitmq.host "your host ip or domain name"
spring.rabbitmq.port 5672
spring.rabbitmq.username "mqadmin"
spring.rabbitmq.password "mqadmin"
使用注解实现生产者或者消费者
// 发送消息
// 在Compontent类中使用Autowired注入RabbitTemplate,实现消息模板
@Autowired
RabbitTemplate rabbitTemplate;
rabbitTemplate.convertAndSend("MessageQueueName", "{some string content....}");
// 接收消息
// 使用RabbitListener注解接收消息的方法
// 参数为String类型,没有返回值(void)
@RabbitListener(queues = "MessageQueueName")
public void processMessage(String message) {
}
配合RabbitMQ的管理界面测试的问题
RabbitMQ提供了一个非常好用的管理界面,可以直接查看消息队列,还可以对队列进行添加,清空操作。
可是当通过管理界面添加的消息给SpringBoot的RabbitMQ消费时,会有乱码的问题!如果直接使用SpringBoot的RabbitTemplate模板是没有问题的。
这个问题主要的原因在于两个端使用的消息格式不一致导致的。
为了通过管理界面给SpringBoot的消费者发送测试消息需要添加两个属性,保证SpringBoot的代码可以解析。
主要是添加两个属性:
“content_type”:”text/plain”
“content_encoding”:”UTF-8”
表示内容类型为文本,编码格式为UTF-8。
这个非常重要,如果查看SpringBoot代码投递的消息,通过GetMessage可以查看SpringBoot输出的消息就是这个样子的。