You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot升级至2.7.5后消费RabbitMQ消息报AmqpRejectAndDontRequeueException错误

Spring Boot 2.7.5 RabbitMQ消费报错"No correlation header in reply"解决方案

问题分析

升级Spring Boot从2.4.3到2.7.5后,消费非请求响应队列时抛出No correlation header in reply异常,错误堆栈显示异常来自RabbitTemplate.onMessage方法。该方法仅用于处理请求响应模式的回复消息,要求消息必须携带correlationId头,说明当前消息被错误路由到了RabbitTemplate的回复处理逻辑中,核心原因是MessageListenerAdapter的配置或版本行为变化导致消息处理逻辑异常。

解决方案

1. 显式指定MessageListenerAdapter的监听方法

在创建MessageListenerAdapter时,明确指定调用自定义ChannelAwareMessageListener的onMessage方法,避免版本升级后默认行为的差异:

@Bean
public MessageListenerAdapter listenerMessageQueueAdapter(ChannelAwareMessageListener messageBrokerReceiver) {
    MessageListenerAdapter adapter = new MessageListenerAdapter(messageBrokerReceiver);
    // 显式指定监听方法
    adapter.setDefaultListenerMethod("onMessage");
    return adapter;
}

2. 绑定正确的消息转换器

确保MessageListenerAdapter使用你配置的Jackson2JsonMessageConverter,避免因消息解析错误触发异常:

@Bean
public MessageListenerAdapter listenerMessageQueueAdapter(ChannelAwareMessageListener messageBrokerReceiver, Jackson2JsonMessageConverter jackson2JsonMessageConverter) {
    MessageListenerAdapter adapter = new MessageListenerAdapter(messageBrokerReceiver);
    adapter.setDefaultListenerMethod("onMessage");
    adapter.setMessageConverter(jackson2JsonMessageConverter);
    return adapter;
}

3. 排查自定义监听类实现

检查你的messageBrokerReceiver实现类,确认没有在onMessage方法中错误调用RabbitTemplate.onMessage方法,这会直接触发该异常。

4. 检查生产者消息

排查上游生产者发送的消息,确认是否有消息错误携带replyTo头但未包含correlationId头,若存在需修复生产者的发送逻辑。

内容的提问来源于stack exchange,提问作者Marcos Stefani Rosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:50:25