【问题标题】:Is exchange type not available at sender side in Spring AMQP RabbitMQ codes?交换类型在 Spring AMQP RabbitMQ 代码中的发送方不可用吗?
【发布时间】:2018-03-15 14:53:01
【问题描述】:

我有一个关于 RabbitMQ 的基本问题。在 Spring AMQP 的情况下,在使用注解的 XML 配置和 Java 配置中,所使用的交换类型仅在侦听器端是已知的。我的意思是,只有消费者配置代码包含正在使用的交换类型(主题/直接/扇出)。在发送方,我们将拥有 -

amqpTemplate.convertAndSend("exchange_name", "routing_key",sampleMessage);

所以是不是发件人代码不关心或不知道它发送到的交换类型(主题/直接/扇出)??

在 python 的情况下,我们在发送方,

 channel.exchange_declare(exchange='logs',
                     exchange_type='fanout')

所以在这里,发送方知道交换的类型。但是在 Spring 的情况下,交换名称是否可用?

【问题讨论】:

    标签: java rabbitmq spring-amqp


    【解决方案1】:

    一般来说,发送者不需要知道交换的类型,尽管发送到扇出意味着路由键被忽略,因此可以是任何值。

    您可以如下声明交换:

    @Bean
    public FanoutExchange exchange() {
        return new FanoutExchange("logs");
    } 
    

    如果有@RabbitAdmin bean,将根据bean 类型自动声明交换。 Spring Boot 自动配置管理员;如果您不使用引导,则需要声明自己的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2013-06-21
      • 2022-06-11
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多