Appearance
织信 RabbitMQ 多线程消费配置与实现指南
一、概述
本文档针对织信(Informat)系统,提供 RabbitMQ 多线程消费的完整配置、代码实现及最佳实践,适用于需要提高消息处理吞吐量的场景。核心目标是通过 SpringBoot 容器线程池管理,实现多线程并发消费,同时保证消息处理的安全性和可靠性。
二、核心原理
RabbitMQ 多线程消费依赖 SpringBoot 提供的 SimpleMessageListenerContainer(默认监听容器),通过以下核心配置实现并发:
- 最小并发消费者数(
concurrency):固定的基础消费线程数 - 最大并发消费者数(
max-concurrency):动态扩缩容的最大线程数 - 预取消息数(
prefetch):控制每个消费者最多预取的消息数,避免消息分配不均 - 手动 ACK(
acknowledge-mode: manual):与织信自定义 ACK 逻辑兼容,保证消息可靠性
三、详细配置
3.1 application.yml 配置
完善 RabbitMQ 连接信息和多线程消费核心参数,配置如下:
yaml
spring:
rabbitmq:
# 基础连接配置
port: 5672
host: 127.0.0.1
username: admin
password: 密码
virtual-host: /
nickname: Informat-Next
# 生产者确认配置(可选,保障生产端可靠性)
publisher-confirm-type: correlated
publisher-returns: true
template:
mandatory: true
# 消费者监听容器配置(多线程核心)
listener:
simple:
acknowledge-mode: manual # 手动ACK,与织信业务逻辑兼容
concurrency: 5 # 最小并发消费线程数(根据CPU核心数调整)
max-concurrency: 10 # 最大并发消费线程数(动态扩缩容)
prefetch: 10 # 每个消费者预取消息数(避免消息堆积)
default-requeue-rejected: false # 消费失败不重回队列(根据业务调整)
retry:
enabled: false # 关闭Spring默认重试(织信业务自行处理失败逻辑)
