Я использовал для объявления очередей, обменов и привязок в одном из моих файлов конфигурации следующим образом:
@EnableRabbit
@Configuration
public class MyRabbitConfiguration {
@Bean
public FanoutExchange firstExchange() {
return new FanoutExchange("firstExchange");
}
@Bean
public Queue firstQueue() {
return new Queue("firstQueue", true, false, false);
}
@Bean
public FanoutExchange secondExchange() {
return new FanoutExchange("secondExchange");
}
@Bean
public Queue secondQueue() {
return new Queue("secondQueue", true, true, true);
}
@Bean
public List<Declarable> bindings() {
return Arrays.asList(
BindingBuilder.bind(firstQueue()).to(firstExchange()),
BindingBuilder.bind(secondQueue()).to(secondExchange()));
}
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory){
final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());
return rabbitTemplate;
}
}
И это работало довольно хорошо. После обновления с Spring Boot 1.5.x (очевидно, также для начинающих) до Spring Boot 2.2.x все работает, кроме Binding
s. Когда я заменяю:
@Bean
public List<Declarable> bindings() {
return Arrays.asList(
BindingBuilder.bind(firstQueue()).to(firstExchange()),
BindingBuilder.bind(secondQueue()).to(secondExchange()));
}
на:
@Bean
public Binding firstBinding() {
return BindingBuilder.bind(firstQueue()).to(firstExchange());
}
@Bean
public Binding secondBinding() {
return BindingBuilder.bind(secondQueue()).to(secondExchange());
}
, он начинает работать, как я ожидаю, и у меня все еще есть Binding
s. Я подозреваю, что это как-то связано с этим , но не смог понять. Что я делаю не так?