RabbitMQ使用规范

preview
需积分: 0 2 下载量 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的使用符合公司的技术架构和安全要求。