Spring amqp:删除特定队列的所有绑定

Spring amqp:删除特定队列的所有绑定,spring,rabbitmq,message-queue,amqp,spring-amqp,Spring,Rabbitmq,Message Queue,Amqp,Spring Amqp,有没有办法使用spring amqp删除特定队列的所有绑定 有一种解决方法,首先删除队列,然后重新声明它 amqpAdmin.deleteQueue("testQueue"); amqpAdmin.declareQueue(new Queue("testQueue")); 但是这是一个非常难看的解决方案,我想避免它您可以使用列出绑定,并amqpAdmin.removeBinding()为您要删除的绑定列出 编辑 下面是使用Java 8流的代码——如果您不使用Java 8,您可以通过迭代列表来完

有没有办法使用spring amqp删除特定队列的所有绑定

有一种解决方法,首先删除队列,然后重新声明它

amqpAdmin.deleteQueue("testQueue");
amqpAdmin.declareQueue(new Queue("testQueue"));
但是这是一个非常难看的解决方案,我想避免它

您可以使用列出绑定,并
amqpAdmin.removeBinding()
为您要删除的绑定列出

编辑

下面是使用Java 8
流的代码
——如果您不使用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绑定到默认exchange和其他2个时)。

我需要删除特定队列的所有绑定。不知道哪些绑定与队列相关。这是一个可靠的答案,尽管它不依赖于AMQP协议。我交替使用qpid和rabbitmq,因此我必须为qpid编写不同的实现。感谢您的帮助。amqp协议(0.9.1)没有列出绑定的命令(方法)。