当前位置: 首页 > news >正文

RabbitMQ配置项

一、核心连接配置(基础必配)

控制 RabbitMQ 服务的连接基础信息,是客户端与 MQ 建立通信的核心。

配置项数据类型默认值说明
spring.rabbitmq.hostStringlocalhostRabbitMQ 服务器地址(单机);集群场景用 addresses 替代
spring.rabbitmq.portInteger5672非 SSL 端口(默认通信端口);SSL 端口默认 5671
spring.rabbitmq.usernameStringguest登录 MQ 的用户名(默认 guest 仅允许本地访问,生产需自定义)
spring.rabbitmq.passwordStringguest登录 MQ 的密码
spring.rabbitmq.virtual-hostString/虚拟主机(MQ 中用于隔离资源的逻辑空间,默认 /
spring.rabbitmq.addressesString-集群地址,格式:host1:port1,host2:port2(优先级高于 host/port

二、连接池配置(性能优化)

通过连接池复用 TCP 连接,避免频繁创建 / 销毁连接的开销(需依赖 spring-boot-starter-amqp,默认自带连接池)。

配置项数据类型默认值说明
spring.rabbitmq.connection-timeoutDuration60000ms(1 分钟)连接超时时间(格式支持 ms/s,如 30s
spring.rabbitmq.cache.connection.modeEnumCHANNEL连接池模式:- CHANNEL:复用连接,创建新通道(推荐,轻量级)- CONNECTION:复用连接对象
spring.rabbitmq.cache.connection.sizeInteger1连接池大小(仅 mode=CONNECTION 时生效)
spring.rabbitmq.cache.channel.sizeInteger25每个连接的通道池大小(mode=CHANNEL 时生效)
spring.rabbitmq.cache.channel.checkout-timeoutDuration0ms从通道池获取通道的超时时间(0 表示无限等待)

三、消费者配置(消息接收核心)

控制消息消费者的行为(如预取数量、并发数、重试策略等),是 RabbitMQ 消费端优化的关键。

配置项数据类型默认值说明
spring.rabbitmq.listener.simple.prefetchInteger250预取消息数量:消费者一次从队列预取的消息数(避免单消费者堆积,需根据业务调整)
spring.rabbitmq.listener.simple.concurrencyInteger1消费者最小并发数(固定并发数可直接设此值)
spring.rabbitmq.listener.simple.max-concurrencyInteger1消费者最大并发数(动态扩缩容时生效,需配合线程池)
spring.rabbitmq.listener.simple.batch-sizeInteger1批量消费的消息数量(需开启批量监听,如 @RabbitListener(batch = true)
spring.rabbitmq.listener.simple.batch-listenerBooleanfalse是否启用批量监听(开启后需接收 List<Message> 或 List<POJO>
spring.rabbitmq.listener.simple.acknowledge-modeEnumAUTO消息确认模式:- AUTO:框架自动确认(无异常则 ack,有异常则 nack)- MANUAL:手动确认(需调用 channel.basicAck()/nack())- NONE:不确认(MQ 发送后直接删除消息,风险高)
spring.rabbitmq.listener.simple.default-requeue-rejectedBooleantrue消费失败时是否将消息重新入队(false 则直接丢弃或进入死信队列)
spring.rabbitmq.listener.simple.idle-event-intervalDuration-消费者空闲检测间隔(如 60s,空闲时触发 ListenerContainerIdleEvent
spring.rabbitmq.listener.simple.retry.enabledBooleanfalse是否启用消费重试(默认关闭,需手动开启)
spring.rabbitmq.listener.simple.retry.max-attemptsInteger3最大重试次数(启用重试后生效)
spring.rabbitmq.listener.simple.retry.initial-intervalDuration1000ms首次重试间隔(后续按 multiplier 倍数递增)
spring.rabbitmq.listener.simple.retry.multiplierDouble1.0重试间隔倍数(如 2.0 表示每次间隔翻倍)
spring.rabbitmq.listener.simple.retry.max-intervalDuration10000ms最大重试间隔(避免间隔无限增大)
spring.rabbitmq.listener.simple.retry.statelessBooleantrue是否为无状态重试(false 表示有状态,需配合事务)

四、生产者配置(消息发送核心)

控制消息生产者的行为(如确认机制、超时时间、交换机默认配置等),保障消息发送的可靠性。

配置项数据类型默认值说明
spring.rabbitmq.template.exchangeString-生产者默认交换机(未指定交换机时使用)
spring.rabbitmq.template.routing-keyString-生产者默认路由键(未指定路由键时使用)
spring.rabbitmq.template.default-receive-queueString-消费者默认接收队列(receive() 方法未指定队列时使用)
spring.rabbitmq.template.mandatoryBooleanfalse是否启用「强制投递」:- true:交换机无法路由消息时,触发 ReturnCallback 回调- false:无法路由时直接丢弃消息
spring.rabbitmq.template.receive-timeoutDuration0ms消费者接收消息的超时时间(0 表示无限等待)
spring.rabbitmq.template.send-timeoutDuration0ms生产者发送消息的超时时间(0 表示无限等待,生产建议设 5000ms
spring.rabbitmq.publisher-confirm-typeEnumNONE生产者确认机制(保障消息到达交换机):- NONE:关闭确认- CORRELATED:消息发送后触发 ConfirmCallback(推荐)- SIMPLE:同步确认(阻塞,不推荐)
spring.rabbitmq.publisher-returnsBooleanfalse是否启用「消息返回」(保障交换机路由到队列):- true:路由失败时触发 ReturnCallback(需配合 mandatory=true

五、SSL 安全配置(加密通信)

当 RabbitMQ 启用 SSL 时,客户端需配置证书相关信息(生产环境推荐启用)。

配置项数据类型默认值说明
spring.rabbitmq.ssl.enabledBooleanfalse是否启用 SSL 加密通信
spring.rabbitmq.ssl.key-storeString-客户端密钥库路径(含客户端证书,如 classpath:client-keystore.jks
spring.rabbitmq.ssl.key-store-passwordString-密钥库密码
spring.rabbitmq.ssl.key-store-typeStringJKS密钥库类型(如 JKSPKCS12
spring.rabbitmq.ssl.trust-storeString-信任库路径(含 MQ 服务器证书,验证服务器身份)
spring.rabbitmq.ssl.trust-store-passwordString-信任库密码
spring.rabbitmq.ssl.trust-store-typeStringJKS信任库类型
spring.rabbitmq.ssl.algorithmString-SSL 算法(默认使用 JVM 默认算法,如 TLSv1.2
spring.rabbitmq.ssl.validate-server-certificateBooleantrue是否验证服务器证书(关闭后可能存在中间人攻击风险)

六、集群与高级配置

针对 RabbitMQ 集群、节点选择、请求超时等高级场景的配置。

配置项数据类型默认值说明
spring.rabbitmq.dynamicBooleantrue是否动态创建连接工厂(默认开启,关闭后需手动配置连接工厂)
spring.rabbitmq.requested-heartbeatDuration60s心跳检测间隔(维持连接活性,避免连接被防火墙断开)
spring.rabbitmq.node-locatorEnumRANDOM集群节点选择策略:- RANDOM:随机选择节点- LOCAL_PREFERRED:优先选择本地节点(若客户端与 MQ 同机)
spring.rabbitmq.publisher-connection-factory-bean-nameString-生产者专用连接工厂的 Bean 名称(默认与消费者共用连接工厂,需自定义时配置)

七、常用配置示例(yml 格式)

以下是生产环境中常见的配置组合,涵盖连接、消费、生产可靠性:

yaml

spring:rabbitmq:# 1. 基础连接host: 192.168.1.100  # MQ 服务器地址(集群用 addresses: 192.168.1.100:5672,192.168.1.101:5672)port: 5672username: prod_userpassword: Prod@123456virtual-host: /prod_vhost  # 生产环境自定义虚拟主机connection-timeout: 30s    # 连接超时# 2. 连接池优化cache:channel:size: 50  # 每个连接的通道池大小checkout-timeout: 5s   # 通道获取超时# 3. 消费者配置(核心)listener:simple:prefetch: 100          # 预取100条消息(避免单消费者堆积)concurrency: 5         # 固定5个消费者并发acknowledge-mode: MANUAL # 手动确认(保障消息不丢失)default-requeue-rejected: false # 消费失败不重新入队(转死信)# 重试配置retry:enabled: truemax-attempts: 3initial-interval: 2smultiplier: 2.0max-interval: 10s# 4. 生产者可靠性(核心)template:send-timeout: 5s         # 发送超时mandatory: true          # 强制投递(路由失败触发回调)publisher-confirm-type: CORRELATED # 生产者确认(到达交换机回调)publisher-returns: true    # 消息返回(路由失败回调)

关键注意事项

  1. 预取数量(prefetch:需根据消费者处理速度调整,处理快则增大(提高吞吐量),处理慢则减小(避免消息堆积)。
  2. 确认模式(acknowledge-mode:生产环境推荐 MANUAL(手动确认),避免框架自动确认导致消息丢失。
  3. 生产者可靠性:必须开启 publisher-confirm-type + publisher-returns + mandatory=true,并实现 ConfirmCallback 和 ReturnCallback 处理异常。
  4. 集群配置:用 addresses 配置多节点,避免单节点故障导致服务不可用。
  5. SSL 配置:生产环境需启用 SSL,并正确配置密钥库 / 信任库,避免明文传输密码。
http://www.dtcms.com/a/391738.html

相关文章:

  • 用html5写一个时区时间查询器
  • deepseek认为明天CSP-J/S初赛的重点
  • 基于Vue的场景解决
  • 浅谈 Sui 的区块链隐私解决方案
  • ETF期权交易的基础知识是什么?
  • 连接管理模块的实现
  • AI 的耳朵在哪里?—— 语音识别
  • 微博舆情大数据实战项目 Python爬虫+SnowNLP情感+Vue可视化 全栈开发 大数据项目 机器学习✅
  • Dify笔记
  • 高精度维文OCR系统:基于深度学习驱动的实现路径、技术优势与挑战
  • 使用Python+Selenium做自动化测试
  • GESP C++ 三级 2025年6月真题解析
  • Linux系统多线程的互斥问题
  • Python 之监控服务器服务
  • el-select 多选增加全部选项
  • Day24 窗口操作
  • 5. Linux 文件系统基本管理
  • 【MySQL】GROUP BY详解与优化
  • 深度学习:DenseNet 稠密连接​ -- 缓解梯度消失
  • Linux DNS 子域授权实践
  • 团体程序设计天梯赛-练习集 L1-041 寻找250
  • mellanox网卡(ConnectX-7)开启SACK
  • 相机镜头靶面
  • 【语法进阶】gevent的使用与总结
  • Java优选算法——前缀和
  • ARM不同层次开发
  • 【Python】高质量解析 PDF 文件框架和工具
  • RSS-2025 | 无地图具身导航新范式!CREStE:基于互联网规模先验与反事实引导的可扩展无地图导航
  • RNA-seq分析之共识聚类分析
  • Linux开发——ARM介绍