Spring AMQP: удалить старые привязки и очереди

Я использую аннотации Spring AMQP и Spring Boot @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();
}

Но я столкнулся с проблемой обновления моей топологии:

  1. Я хочу добавить новую очередь/привязку/обмен
  2. И удалить старую очередь/привязку/обмен (даже если это была устойчивая сущность).

Существует ли какая-либо аннотация для удаления или отмены привязки (например, @Unbind)? Я видел пример, где предлагалось RabbitManagementTemplate, но это совершенно другой способ настройки — я хочу хранить все в одном классе @Configuration и использовать только аннотации или конфигурационные компоненты (возможно ли это?). Существует ли какой-то общий шаблон для создания/удаления и обновления топологии кролика (может быть, я что-то пропустил)?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не можете удалять объекты с аннотациями или конфигурацией, используйте методы RabbitAdmin.delete*() для их удаления, как в этом ответе — шаблон управления использовался для перечисления привязок, RabbitAdmin (amqpAdmin) выполняет удаление.

Другие вопросы по теме