[英]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.