2012-06-16 54 views
4

每次我將AMQP隊列綁定到交易所時,它似乎都會自動綁定到「默認」直接交易。如何停止綁定到AMQP默認交換?

下面是使用的RabbitMQ服務器和node.js的代碼:

var amqp = require('amqp'); 

var connection = amqp.createConnection({host:'localhost'}); 

connection.on('ready', function(){ 
    var q = connection.queue('test_queue_name'); 
    var exc = connection.exchange('test_exchange', { autoDelete:true }); 
    q.bind('test_exchange', 'test.key'); 
}); 

這裏的控制檯輸出使用 「rabbitmqctl list_bindings」 時命令:

Listing bindings ... 
     exchange  test_queue_name queue test_queue_name [] 
test_exchange exchange  test_queue_name queue test.key  [] 
...done. 

回答

2

RabbitMQ的每個隊列自動綁定到與路由鍵的默認交換與隊列名稱相同。

docs

默認交換是沒有名字(空字符串),由經紀人預先聲明的直接交流。它具有一個特殊的屬性,對於簡單的應用程序非常有用:每個創建的隊列都使用與隊列名稱相同的路由鍵自動綁定到它。

我很確定這是AMQP規範的一部分。

+0

謝謝。你確定即使另一個綁定被命名,默認交換也是綁定的嗎?在教程中,當使用'rabbitmqctl list_bindings'時,它不顯示默認交換來綁定... – RobotEyes

+0

我在教程中使用了額外的'...'來表示它們省略了一些信息。 (假設你在看這個:http://www.rabbitmq.com/tutorials/tutorial-three-python.html) – jimr

+0

啊......我現在看到了。謝謝你的幫助。 – RobotEyes