RabbitMQ使用规范
需积分: 0 27 浏览量
更新于2023-08-04
收藏 209KB PDF 举报
RabbitMQ使用规范
概述
RabbitMQ是基于AMQP高性能的开源消息队列服务器,可以用来实现消息的发布、订阅和routing。该规范旨在为RabbitMQ的使用提供一个统一的标准,确保RabbitMQ的使用符合公司的技术架构和安全要求。
版本控制
RabbitMQ的版本应当至少高于3.8.0,以支持新的队列类型。使用低版本的RabbitMQ可能会导致不兼容的问题。
权限控制
按照模块创建vhosts、用户名和密码。例如,SLP模块则创建一个vhosts为SLP。这种方式可以确保每个模块都有其自己的权限控制,可以避免模块之间的权限冲突。
队列类型
RabbitMQ支持多种队列类型,每种队列类型都有其特点和应用场景。常见的队列类型有:
* Classic queue:对性能要求较高,可以接受数据丢失的场景。
* Transient or exclusive queues:对数据安全要求较高的场景。
* Quorum queue:提供高可用性和高性能的队列类型,可以在多个节点上部署。
* Stream queue:需要重复读取消息的场景。
连接工厂
使用Spring Boot可以自动注册AMQP连接工厂,但是在实际项目开发中,不建议使用默认的配置。推荐按照业务来划分,在boot.autoconfigure包中,创建该业务对应的Configuration类。例如,用于定时任务的MQ则创建一个TimedTaskAmqpConfiguration类,如果要对接消息通知,则相应的创建一个NotificationAmqpConfiguration。
监听工厂
推荐按业务创建不同的监听工厂,自定义监听工厂后,必须给其中一个命名为rabbitListenerContainerFactory,作为默认的监听工厂,否则Spring会自动帮忙重复创建一个。
Classic Queue的使用
如果使用classic queue,必须关闭default-requeue-rejected选项,否则会导致失败消费的消息一直重新投递造成雪崩。关了失败投递后,可以利用Spring自带的retry来进行本地重试。如果RabbitMQ支持quorum queue,还是建议换成quorum queue。
配置示例
以下是一个使用RabbitMQ的配置示例:
```yaml
spring:
rabbitmq:
addresses: 192.168.137.104:5672,192.168.137.105:5672,192.168.137.106:5672
virtual-host: rcms
username: rcms
password: 123456
```
@Configuration
public class TimedTaskAmqpConfiguration {
@Bean
public CachingConnectionFactory timedTaskConnectionFactory(ResourceLoader resourceLoader) throws Exception {
RabbitProperties rabbitProperties = new RabbitProperties();
rabbitProperties.setAddresses("192.168.137.104:5672,192.168.137.105:5672,192.168.137.106:5672");
rabbitProperties.setVirtualHost("timed-task");
rabbitProperties.setUsername("timed-task");
rabbitProperties.setPassword("123456");
...
}
}
```
RabbitMQ使用规范旨在提供一个统一的标准,确保RabbitMQ的使用符合公司的技术架构和安全要求。