2015-02-12 23 views
2

隨着RabbitMQ的我在做類似這樣:的RabbitMQ:如何防止QueueDeclare自動生成一個新的隊列

channel.QueueDeclare(QueueName, true, false, false, null); 

默認情況下RabbitMQ的創建一個新的隊列,如果沒有現有的提供的名稱相匹配。我想拋出異常。 這可能嗎?

謝謝

+0

什麼是你想實現?你有沒有嘗試過使用被動聲明? – 2015-02-16 16:13:54

+0

我只是想使用一個隊列,如果沒有聲明它。我將調查有關被動聲明。謝謝 – abx78 2015-02-16 19:33:15

+0

如果隊列丟失了,那麼你必須聲明它,這是沒有辦法的。 – 2015-02-17 09:21:26

回答

4

您可以綁定到現有的隊列,而無需聲明新的隊列。

try 
{ 
    channel.QueueBind(queueName, exchange, routingKey); 
} 
catch (RabbitMQ.Client.Exceptions.OperationInterruptedException ex) 
{ 
    // Queue not found 
} 

如果你想綁定的隊列不存在拋出的異常的一個例子:

RabbitMQ.Client.Exceptions.OperationInterruptedException: The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=404, text="NOT_FOUND - no queue 'TestQueue' in vhost '/'", classId=50, methodId=20, cause= 
+0

完美,謝謝! – abx78 2015-02-12 13:00:54