Spring AMQP RabbitMQ 代码中的发送方是否提供交换类型?
Is exchange type not available at sender side in Spring AMQP RabbitMQ codes?
我有一个关于 RabbitMQ 的基本问题。在 Spring AMQP 的情况下,在 XML 配置和使用注释的 Java 配置中,所使用的交换类型仅在侦听器端已知。我的意思是,只有消费者配置代码包含正在使用的交换类型 (topic/direct/fanout)。在发件人方面,我们将有 -
amqpTemplate.convertAndSend("exchange_name", "routing_key",sampleMessage);
那么发送方代码是否不被打扰或不知道它要发送到的交换类型(topic/direct/fanout)??
在 python 的情况下,我们在发件人端有
channel.exchange_declare(exchange='logs',
exchange_type='fanout')
所以在这里,发送者知道交换的类型。但是在 Spring 的情况下,是否只有交易所名称可用??
一般来说,发送方不需要知道交换的类型,尽管发送到扇出意味着路由键被忽略,因此可以是任何值。
您可以通过以下方式申报兑换:
@Bean
public FanoutExchange exchange() {
return new FanoutExchange("logs");
}
如果有 @RabbitAdmin
bean,交换将根据 bean 类型自动声明。 Spring 启动 auto-configures 管理员;如果你不使用引导,你需要声明你自己的。
我有一个关于 RabbitMQ 的基本问题。在 Spring AMQP 的情况下,在 XML 配置和使用注释的 Java 配置中,所使用的交换类型仅在侦听器端已知。我的意思是,只有消费者配置代码包含正在使用的交换类型 (topic/direct/fanout)。在发件人方面,我们将有 -
amqpTemplate.convertAndSend("exchange_name", "routing_key",sampleMessage);
那么发送方代码是否不被打扰或不知道它要发送到的交换类型(topic/direct/fanout)??
在 python 的情况下,我们在发件人端有
channel.exchange_declare(exchange='logs',
exchange_type='fanout')
所以在这里,发送者知道交换的类型。但是在 Spring 的情况下,是否只有交易所名称可用??
一般来说,发送方不需要知道交换的类型,尽管发送到扇出意味着路由键被忽略,因此可以是任何值。
您可以通过以下方式申报兑换:
@Bean
public FanoutExchange exchange() {
return new FanoutExchange("logs");
}
如果有 @RabbitAdmin
bean,交换将根据 bean 类型自动声明。 Spring 启动 auto-configures 管理员;如果你不使用引导,你需要声明你自己的。