Skip to content

织信 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默认重试(织信业务自行处理失败逻辑)