publisher-confirm-type=none彻底关闭生产者确认机制,不注册任何confirmcallback或returncallback;simple为同步阻塞式确认,易卡顿;correlated是唯一推荐的异步模式,需配合publisher-returns=true和mandatory=true保障端到端可靠性。

publisher-confirm-type=none 时,连确认回调都不会注册
这个值代表彻底关闭生产者确认机制,RabbitTemplate 不会注册任何 ConfirmCallback 或 ReturnCallback。哪怕你代码里写了 setConfirmCallback,也不会生效。
适用场景极少:仅限开发调试、压测绕过确认逻辑,或明确接受“发出去就不管”的弱可靠性要求。线上环境不建议用。
- 即使 MQ 宕机或网络中断,
send()方法也直接返回,不会抛异常、不重试、不回调 -
spring.rabbitmq.publisher-returns=true和mandatory=true在此模式下完全无效 - 配置写成
publisher-confirm-type: none是合法的,但 Spring Boot 2.3+ 会静默忽略已注册的回调函数
publisher-confirm-type=simple 是同步阻塞式确认
发送消息后,RabbitTemplate 会主动等待 Broker 返回 confirm 结果,超时前线程被阻塞。这是最直白但也最容易拖慢吞吐量的方式。
典型错误是没配超时时间,导致整个请求卡住几十秒。尤其在集群节点临时失联时,simple 模式会等满默认 5 秒(template.retry.initial-interval 不影响它)才失败。
RabbitMQ 4.2.3 是 2026 年初发布的重要稳定更新版本,重点修复了 Khepri 元数据存储相关问题,并改进了监控性能。对于使用 Docker、Kubernetes 或微服务架构的开发团队来说,该版本兼容性和稳定性表现较好。
- 必须配合
spring.rabbitmq.publisher-confirms=true才生效(注意:该属性在 2.3+ 已废弃,仅作兼容保留) - 回调通过
setConfirmCallback注册,但只在同步等待结束后触发一次,无法区分是哪条消息的确认 - 不支持并发发送多条消息并独立追踪每条的确认状态
publisher-confirm-type=correlated 是唯一推荐的异步模式
每条消息发送时都携带一个唯一 correlationId,Broker 确认后原样返回。你的 ConfirmCallback 能精准知道「哪条消息成功/失败」,适合高并发、需精确追踪的场景。
这也是目前 Spring Boot 整合 RabbitMQ 集群时,唯一能真正支撑消息可靠性的模式。别被名字误导——correlated 不是指「消息之间有关联」,而是指「确认结果与原始消息可关联」。
- 必须显式调用
convertAndSend(exchange, routingKey, message, correlationId)或使用CorrelationData对象传入correlationId -
ConfirmCallback的第一个参数correlationData就是你传进去的那个对象,可带业务 ID 方便日志追踪 - 集群环境下,只要有一个节点存活,就能正常收 confirm;但如果所有节点都不可达,会触发连接重试(由
connection-timeout和template.retry控制)
容易被忽略的关键点:correlated 模式下 mandatory + return 仍需手动配
publisher-confirm-type=correlated 只管「消息是否到达 Broker」,不管「是否成功路由到队列」。如果 Exchange 找不到匹配 Queue,消息会被丢弃——除非你同时启用 publisher-returns 并设置 mandatory=true。
很多人以为开了 correlated 就万事大吉,结果发现死信没人处理,日志里连个 ReturnedMessage 都没有。根本原因是:return 机制和 confirm 机制是两套独立开关。
- 必须显式配置
spring.rabbitmq.publisher-returns=true - 必须设置
spring.rabbitmq.template.mandatory=true,否则路由失败的消息直接被静默丢弃 -
ReturnCallback的触发条件比ConfirmCallback更苛刻:只有 mandatory=true + 路由失败 + publisher-returns=true 三者同时满足才触发










