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

Spring Boot RabbitMQ问题:消息显示在Exchange但Queue为空

问题原因及解决方案

你遇到的核心问题是RabbitMQ配置类中的绑定方法未被Spring容器识别,导致Exchange与Queue之间没有建立绑定关系:

在你的RabbitMQConfig类里,binding()方法缺少@Bean注解,Spring不会将这个绑定实例注册到容器中,也就不会在RabbitMQ服务端创建Exchange和Queue的绑定关系。消息发送到Exchange后,找不到匹配的Queue,最终会被RabbitMQ丢弃,所以你能在Exchange图表看到消息流转,但Queue始终为空。

修复方法

给binding()方法添加@Bean注解,让Spring管理这个绑定配置:

@Configuration
public class RabbitMQConfig {

    @Value("${rabbitmq.queue.name}")
    private String queue;

    @Value("${rabbitmq.exchange.name}")
    private String exchange;

    @Value("${rabbitmq.routing.key}")
    private String routingKey;


    @Bean
    public Queue queue(){
        return new Queue(queue);
    }

    @Bean
    public TopicExchange exchange(){
        return new TopicExchange(exchange);
    }

    // 添加@Bean注解,让Spring注册这个绑定关系
    @Bean
    public Binding binding(){
        return BindingBuilder
                .bind(queue())
                .to(exchange())
                .with(routingKey);
    }
}

额外排查点

  • 检查配置文件中rabbitmq.queue.name、rabbitmq.exchange.name、rabbitmq.routing.key的参数值是否正确,避免拼写错误
  • 修改配置后重启应用,确保绑定关系在RabbitMQ服务端生效

内容的提问来源于stack exchange,提问作者Batuğ Can Akpınar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:47:04