Skip to content

Spring Boot RabbitMQ 配置详解

基本信息

项目
类名org.springframework.boot.autoconfigure.amqp.RabbitProperties
配置前缀spring.rabbitmq
Artifactorg.springframework.boot:spring-boot-autoconfigure:3.5.16

一、核心连接配置

1.1 基础连接参数

配置属性默认值类型说明
spring.rabbitmq.hostlocalhostStringRabbitMQ 服务器主机名
spring.rabbitmq.port自动判断Integer端口号(SSL 启用时为 5671,否则为 5672)
spring.rabbitmq.usernameguestString用户名
spring.rabbitmq.passwordguestString密码
spring.rabbitmq.virtual-host/String虚拟主机名称

1.2 高级连接配置

配置属性默认值类型说明
spring.rabbitmq.addresses-List<String>多地址列表,格式:amqp://host:port
spring.rabbitmq.address-shuffle-modeNONEAddressShuffleMode地址洗牌模式(NONE/RANDOM/ROUND_ROBIN)
spring.rabbitmq.requested-heartbeat-Duration心跳间隔时间
spring.rabbitmq.requested-channel-max2047int请求的最大通道数
spring.rabbitmq.connection-timeout-Duration连接超时时间

1.3 发布者确认与返回

配置属性默认值类型说明
spring.rabbitmq.publisher-returnsfalseboolean是否启用发布者返回
spring.rabbitmq.publisher-confirm-type-ConfirmType发布者确认类型(SIMPLE/CORRELATED/NONE)

1.4 消息大小限制

配置属性默认值类型说明
spring.rabbitmq.max-inbound-message-body-size64MBDataSize最大入站消息体大小
spring.rabbitmq.channel-rpc-timeout10mDuration通道 RPC 超时时间

二、SSL 配置 (spring.rabbitmq.ssl)

配置属性默认值类型说明
spring.rabbitmq.ssl.enabled-Boolean是否启用 SSL
spring.rabbitmq.ssl.bundle-StringSSL 绑定器名称
spring.rabbitmq.ssl.key-store-String密钥库路径
spring.rabbitmq.ssl.key-store-typePKCS12String密钥库类型
spring.rabbitmq.ssl.key-store-password-String密钥库密码
spring.rabbitmq.ssl.key-store-algorithmSunX509String密钥管理器算法
spring.rabbitmq.ssl.trust-store-String信任库路径
spring.rabbitmq.ssl.trust-store-typeJKSString信任库类型
spring.rabbitmq.ssl.trust-store-password-String信任库密码
spring.rabbitmq.ssl.trust-store-algorithmSunX509String信任管理器算法
spring.rabbitmq.ssl.algorithm-StringSSL 套接字工厂算法
spring.rabbitmq.ssl.validate-server-certificatetrueboolean验证服务器证书
spring.rabbitmq.ssl.verify-hostnametrueboolean验证主机名

三、缓存配置 (spring.rabbitmq.cache)

3.1 通道缓存 (spring.rabbitmq.cache.channel)

配置属性默认值类型说明
spring.rabbitmq.cache.channel.size-Integer通道缓存大小
spring.rabbitmq.cache.channel.checkout-timeout-Duration通道检出超时时间

3.2 连接缓存 (spring.rabbitmq.cache.connection)

配置属性默认值类型说明
spring.rabbitmq.cache.connection.modeCHANNELCacheMode缓存模式(CHANNEL/CONNECTION)
spring.rabbitmq.cache.connection.size-Integer连接缓存大小

四、监听器配置 (spring.rabbitmq.listener)

4.1 通用监听器配置

配置属性默认值类型说明
spring.rabbitmq.listener.typeSIMPLEContainerType容器类型(SIMPLE/DIRECT/STREAM)

4.2 SIMPLE 容器 (spring.rabbitmq.listener.simple)

配置属性默认值类型说明
spring.rabbitmq.listener.simple.concurrency-Integer初始消费者数量
spring.rabbitmq.listener.simple.max-concurrency-Integer最大消费者数量
spring.rabbitmq.listener.simple.batch-size-Integer批处理大小
spring.rabbitmq.listener.simple.missing-queues-fataltrueboolean队列缺失是否致命
spring.rabbitmq.listener.simple.consumer-batch-enabledfalseboolean是否启用消费者批处理
spring.rabbitmq.listener.simple.observation-enabled-boolean是否启用可观测性

4.3 DIRECT 容器 (spring.rabbitmq.listener.direct)

配置属性默认值类型说明
spring.rabbitmq.listener.direct.consumers-per-queue-Integer每个队列的消费者数
spring.rabbitmq.listener.direct.missing-queues-fatal-boolean队列缺失是否致命
spring.rabbitmq.listener.direct.observation-enabled-boolean是否启用可观测性

4.4 STREAM 容器 (spring.rabbitmq.listener.stream)

配置属性默认值类型说明
spring.rabbitmq.listener.stream.native-listener-boolean是否使用原生流监听器
spring.rabbitmq.listener.stream.observation-enabled-boolean是否启用可观测性

4.5 基础容器通用配置 (AmqpContainer)

配置属性默认值类型说明
spring.rabbitmq.listener.*.auto-startuptrueboolean是否自动启动
spring.rabbitmq.listener.*.acknowledge-mode-AcknowledgeMode确认模式(AUTO/MANUAL/NACK_REQUEUE)
spring.rabbitmq.listener.*.prefetch-Integer预取消息数
spring.rabbitmq.listener.*.default-requeue-rejected-Boolean拒绝后是否重新入队
spring.rabbitmq.listener.*.idle-event-interval-Duration空闲事件间隔
spring.rabbitmq.listener.*.de-batching-enabledtrueboolean是否启用解批处理
spring.rabbitmq.listener.*.force-stop-boolean是否强制停止

4.6 监听器重试配置 (spring.rabbitmq.listener.*.retry)

配置属性默认值类型说明
spring.rabbitmq.listener.*.retry.enabledfalseboolean是否启用重试
spring.rabbitmq.listener.*.retry.max-attempts3int最大重试次数
spring.rabbitmq.listener.*.retry.initial-interval1000msDuration初始重试间隔
spring.rabbitmq.listener.*.retry.multiplier1.0double重试间隔倍增系数
spring.rabbitmq.listener.*.retry.max-interval10000msDuration最大重试间隔
spring.rabbitmq.listener.*.retry.statelesstrueboolean是否无状态重试

五、模板配置 (spring.rabbitmq.template)

配置属性默认值类型说明
spring.rabbitmq.template.mandatory-Boolean是否强制投递
spring.rabbitmq.template.receive-timeout-Duration接收超时时间
spring.rabbitmq.template.reply-timeout-Duration回复超时时间
spring.rabbitmq.template.exchange``String默认交换机
spring.rabbitmq.template.routing-key``String默认路由键
spring.rabbitmq.template.default-receive-queue-String默认接收队列
spring.rabbitmq.template.observation-enabled-boolean是否启用可观测性
spring.rabbitmq.template.allowed-list-patterns-List<String>允许列表模式

5.1 模板重试配置 (spring.rabbitmq.template.retry)

配置属性默认值类型说明
spring.rabbitmq.template.retry.enabledfalseboolean是否启用重试
spring.rabbitmq.template.retry.max-attempts3int最大重试次数
spring.rabbitmq.template.retry.initial-interval1000msDuration初始重试间隔
spring.rabbitmq.template.retry.multiplier1.0double重试间隔倍增系数
spring.rabbitmq.template.retry.max-interval10000msDuration最大重试间隔

六、Stream 配置 (spring.rabbitmq.stream)

Spring Boot 3.x 对 RabbitMQ Stream 协议的原生支持配置。

配置属性默认值类型说明
spring.rabbitmq.stream.hostlocalhostStringStream 服务器主机名
spring.rabbitmq.stream.port5552intStream 端口号
spring.rabbitmq.stream.virtual-host-StringStream 虚拟主机
spring.rabbitmq.stream.username-StringStream 用户名
spring.rabbitmq.stream.password-StringStream 密码
spring.rabbitmq.stream.name-StringStream 名称

七、示例配置 (application.yml)

yaml
spring:
  rabbitmq:
    # 基础连接配置
    host: localhost
    port: 5672
    username: guest
    password: guest
    virtual-host: /

    # 多地址配置(可选)
    addresses:
      - amqp://host1:5672
      - amqp://host2:5672
    address-shuffle-mode: ROUND_ROBIN

    # SSL 配置
    ssl:
      enabled: true
      key-store: classpath:client.keystore.p12
      key-store-type: PKCS12
      key-store-password: password
      trust-store: classpath:client.truststore.jks
      trust-store-type: JKS
      trust-store-password: password

    # 连接配置
    requested-heartbeat: 60s
    requested-channel-max: 2047
    connection-timeout: 30s
    channel-rpc-timeout: 10m
    max-inbound-message-body-size: 64MB

    # 发布者确认
    publisher-returns: true
    publisher-confirm-type: CORRELATED

    # 缓存配置
    cache:
      channel:
        size: 25
        checkout-timeout: 5s
      connection:
        mode: CONNECTION
        size: 10

    # 监听器配置
    listener:
      type: SIMPLE
      simple:
        concurrency: 5
        max-concurrency: 10
        prefetch: 10
        missing-queues-fatal: true
        retry:
          enabled: true
          max-attempts: 3
          initial-interval: 1000ms
          multiplier: 2.0
          max-interval: 10s

    # 模板配置
    template:
      exchange: my-exchange
      routing-key: my-routing-key
      receive-timeout: 5s
      reply-timeout: 10s
      retry:
        enabled: true
        max-attempts: 3

    # Stream 配置
    stream:
      host: localhost
      port: 5552
      name: my-stream

八、枚举类型说明

8.1 ContainerType(容器类型)

  • SIMPLE - SimpleMessageListenerContainer
  • DIRECT - DirectMessageListenerContainer
  • STREAM - Stream 专用容器

8.2 CacheMode(缓存模式)

  • CHANNEL - 缓存通道(默认)
  • CONNECTION - 缓存连接

8.3 AddressShuffleMode(地址洗牌模式)

  • NONE - 不洗牌(默认)
  • RANDOM - 随机选择
  • ROUND_ROBIN - 轮询选择

九、注意事项

  1. 多主机支持:如需配置多个主机,请使用 spring.rabbitmq.addresses 而非 spring.rabbitmq.host
  2. SSL 端口:启用 SSL 时,默认端口自动切换为 5671
  3. Stream 端口:RabbitMQ Stream 协议默认使用 5552 端口
  4. 虚拟主机:为空时默认为 /
  5. 重试机制:监听器和模板的重试配置是独立的

更新于:

note