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