簡體   English   中英

Spring Amqp:刪除特定隊列的所有綁定

[英]Spring amqp: Remove all bindings for specific queue

有沒有辦法使用spring-amqp刪除特定隊列的所有綁定?

有一種解決方法,首先刪除隊列,然后重新聲明

amqpAdmin.deleteQueue("testQueue");
amqpAdmin.declareQueue(new Queue("testQueue"));

但這是丑陋的解決方案,我想避免它

您可以使用REST API列出要刪除的綁定和amqpAdmin.removeBinding()

編輯

這是使用Java 8 Stream的代碼-如果您不使用Java 8,則可以通過遍歷列表來做同樣的事情...

RabbitManagementTemplate rmt = new RabbitManagementTemplate("http://localhost:15672/api/", "guest", "guest");
rmt.getBindings().stream()
    .filter(b -> b.getDestination().equals("q1") && b.isDestinationQueue())
    .forEach(b -> {
        System.out.println("Deleting " + b);
        amqpAdmin.removeBinding(b);
    });

結果:

Deleting Binding [destination=q1, exchange=, routingKey=q1]
Deleting Binding [destination=q1, exchange=ex1, routingKey=foo]
Deleting Binding [destination=q1, exchange=ex2, routingKey=foo]

(當q1綁定到默認交換以及另外2個綁定時)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM