Spring AMQP:删除旧的绑定和队列
Spring AMQP: remove old bindings and queues
我正在使用 Spring AMQP 和 Spring 引导 @Configuration
和 @Bean
注释来创建所有必需的队列、交换和绑定。
@Bean
public Queue queue() {
return new Queue("my_old_queue", true, false, false);
}
@Bean
public Exchange exchange() {
return new DirectExchange("MY_OLD_EXCHANGE");
}
@Bean
public Binding binding() {
return BindingBuilder.bind(queue())
.to(exchange())
.with("old_binding")
.noargs();
}
但是我遇到了升级拓扑的问题:
- 我想添加一个新的queue/binding/exchange
- 并删除旧的 queue/binding/exchange(即使它是持久实体)。
是否存在用于删除或解除绑定的注释(如 @Unbind
)?
我已经看到 其中 RabbitManagementTemplate
被建议,但这是一种完全不同的配置方式 - 我想将所有内容保存在单个 @Configuration class 中并仅使用注释或配置 bean(可能吗?)。
creating/removing 和更新 rabbit 拓扑是否存在一些通用模式(也许我错过了什么)?
您不能删除带有注释或配置的实体,请使用 RabbitAdmin.delete*()
方法删除它们,就像在该答案中一样 - 管理模板用于列出绑定,RabbitAdmin
(amqpAdmin
) 进行删除。
我正在使用 Spring AMQP 和 Spring 引导 @Configuration
和 @Bean
注释来创建所有必需的队列、交换和绑定。
@Bean
public Queue queue() {
return new Queue("my_old_queue", true, false, false);
}
@Bean
public Exchange exchange() {
return new DirectExchange("MY_OLD_EXCHANGE");
}
@Bean
public Binding binding() {
return BindingBuilder.bind(queue())
.to(exchange())
.with("old_binding")
.noargs();
}
但是我遇到了升级拓扑的问题:
- 我想添加一个新的queue/binding/exchange
- 并删除旧的 queue/binding/exchange(即使它是持久实体)。
是否存在用于删除或解除绑定的注释(如 @Unbind
)?
我已经看到 RabbitManagementTemplate
被建议,但这是一种完全不同的配置方式 - 我想将所有内容保存在单个 @Configuration class 中并仅使用注释或配置 bean(可能吗?)。
creating/removing 和更新 rabbit 拓扑是否存在一些通用模式(也许我错过了什么)?
您不能删除带有注释或配置的实体,请使用 RabbitAdmin.delete*()
方法删除它们,就像在该答案中一样 - 管理模板用于列出绑定,RabbitAdmin
(amqpAdmin
) 进行删除。