我在RabbitMQ中有一个基本问题。对于Spring AMQP,在XML配置和使用注释的Java配置中,所使用的交换类型仅在侦听器侧是已知的。我的意思是,只有消费者配置代码包含正在使用的交换类型(主题/直接/扇出)。在发送方,我们将 -
amqpTemplate.convertAndSend("exchange_name", "routing_key",sampleMessage);
因此,发送者代码不会被打扰或意识到它所发送到的交换的类型(主题/直接/扇出)吗?
在python的情况下,我们在发送方,
channel.exchange_declare(exchange='logs',
exchange_type='fanout')
所以在这里,发送者知道交换的类型。但是在Spring的情况下,交换名是否可用?
答案 0 :(得分:1)
一般情况下,发送方并不需要知道交换类型,但发送到扇出意味着路由密钥被忽略,因此可以是任何值。
您可以按如下方式声明交换:
@Bean
public FanoutExchange exchange() {
return new FanoutExchange("logs");
}
如果有@RabbitAdmin
bean,将根据bean类型自动声明交换。 Spring Boot自动配置管理员;如果你没有使用启动,你需要声明自己的启动。