我可以在Rabbit MQ上使用spring配置删除队列吗?

时间:2014-07-29 01:54:43

标签: spring rabbitmq amqp spring-rabbit

我正在为RabbitMQ上的队列更改一些交换,但是如果队列已经存在,我需要手动删除,那么只有spring会用更改的交换创建队列。

我们在spring rabbit中有任何选项可以根据spring文件中的队列配置删除队列。

例如:我期待兔子:deletequeue name =“a”并再次创建兔子:队列名称=“a”

因此它将删除队列,然后它将再次创建新属性,这将消除Rabbit MQ上手动删除队列。

如果我错了,请纠正我,请指导我解决方案

SRINIVAS

2 个答案:

答案 0 :(得分:4)

您可以使用AmqpAdmin

来完成

3.8 http://docs.spring.io/spring-amqp/reference/html/amqp.html

public interface AmqpAdmin {

    // Exchange Operations

    void declareExchange(Exchange exchange);

    void deleteExchange(String exchangeName);

    // Queue Operations

    Queue declareQueue();

    String declareQueue(Queue queue);

    void deleteQueue(String queueName);

    void deleteQueue(String queueName, boolean unused, boolean empty);

    void purgeQueue(String queueName, boolean noWait);

    // Binding Operations

    void declareBinding(Binding binding);

    void removeBinding(Binding binding);

    Properties getQueueProperties(String queueName);
}

或者只使用autoDelete选项创建一个队列。

答案 1 :(得分:1)

您无法通过配置执行此操作,但您可以通过设置auto-startup="false"来阻止管理员自动声明队列。

然后,在您自己的bean中(实现SmartLifeCycle,从Integer.MAX_VALUE返回getPhase(),并在start()中使用兔子管理员删除队列。然后调用其initialize()方法在上下文中声明所有内容。