簡體   English   中英

我可以在Rabbit MQ上使用spring配置刪除隊列嗎?

[英]Can i delete a queue using spring configuration on Rabbit MQ?

我正在為RabbitMQ上的隊列更改某些交換,但是如果該隊列已經存在,則需要手動刪除,那么只有spring會使用更改后的交換創建隊列。

Spring Rabbit中是否有任何選項可以根據spring文件中的隊列配置刪除隊列。

例如:我期望Rabbit:deletequeue name =“ a”並再次創建Rabbit:queue name =“ a”

因此,它將刪除隊列,然后使用新屬性再次創建,這將消除在Rabbit MQ上手動刪除隊列的情況。

糾正我,如果我錯了,否則請指導我解決方案

斯里尼瓦斯

您可以使用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選項創建隊列。

您無法通過配置來做到這一點,但是可以通過設置auto-startup="false"來阻止管理員自動聲明隊列。

然后,在您自己的bean中(實現SmartLifeCycle ,從getPhase()返回Integer.MAX_VALUE ,在start()使用getPhase() admin刪除隊列。然后調用其initialize()方法在上下文中聲明所有內容。

暫無
暫無

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

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