分布式消息服务RabbitMQ版
分布式消息服务RabbitMQ版
- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- 开发指南
- API参考
- SDK参考
-
常见问题
-
实例问题
- RabbitMQ使用的版本是多少?
- RabbitMQ实例SSL连接的协议版本号是多少?
- 创建实例时为什么无法查看子网和安全组等信息?
- RabbitMQ集群实例如何均衡分发请求到每个虚拟机?
- RabbitMQ实例集群内部的队列是否有冗余备份?
- RabbitMQ实例是否支持持久化,如何定时备份数据?
- RabbitMQ实例开启SSL后,证书怎么获取?
- RabbitMQ实例的SSL开关是否支持修改?
- RabbitMQ实例是否支持扩容?
- RabbitMQ支持双向认证吗?
- RabbitMQ支持升级CPU和内存吗?
- 如何关闭RabbitMQ的WebUI?
- 实例是否支持修改可用区?
- 如何获取region id?
- 为什么不能选择2个可用区?
- 单机RabbitMQ实例如何变更为集群实例?
- RabbitMQ实例创建后,能修改VPC和子网吗?
- RabbitMQ扩容/缩容会影响业务吗?
- 连接问题
- 消息问题
- 监控告警问题
-
实例问题
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
使用Spring Boot连接RabbitMQ实例
本文介绍如何使用Spring Boot连接RabbitMQ实例进行消息的生产和消费。
使用前请参考收集连接信息收集RabbitMQ所需的连接信息。
本文的连接示例对于RabbitMQ 3.x.x版本与AMQP-0-9-1版本都适用。
在pom.xml文件中引入spring-boot-starter-amqp依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
(可选)在application.properties文件中填写配置
如果RabbitMQ实例已开启SSL,在“application.properties”文件中填写如下配置。
#开启SSL认证
spring.rabbitmq.ssl.enabled=true
#SSL使用的算法
spring.rabbitmq.ssl.algorithm=TLSv1.2
#是否启用主机验证
spring.rabbitmq.ssl.verify-hostname=false
#是否启用服务端证书验证
spring.rabbitmq.ssl.validate-server-certificate=false
生产消息
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ProducerController {
private static final Logger LOG = LoggerFactory.getLogger(ProducerController.class);
@Autowired
private RabbitTemplate;
@GetMapping(value = "/send")
public boolean send(String msg, Long delayTime) {
rabbitTemplate.convertAndSend("ex-sour", "abc", msg,
message -> {
/**
* 设置延迟时间
*/
message.getMessageProperties().setHeader("x-delay", delayTime);
return message;
});
LOG.info("发送延迟消息:{},延时:{}ms", msg, delayTime);
return true;
}
}
消费消息
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component
public class ReceiveMsgService {
Logger LOG = LoggerFactory.getLogger(ReceiveMsgService.class);
@RabbitListener(queues = "test")
public void receive(String message) {
SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
LOG.info("receive message: {}", message + " 接收时间:" + simpleDateFormat.format(new Date()));
}
}