【问题标题】:How to stop binding to AMQP default exchange?如何停止绑定到 AMQP 默认交换?
【发布时间】:2012-06-16 23:54:16
【问题描述】:

每次我将 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.

【问题讨论】:

    标签: javascript node.js rabbitmq amqp


    【解决方案1】:

    RabbitMQ 使用与队列名称相同的路由键自动将每个队列绑定到默认交换。

    来自docs

    默认交换是代理预先声明的没有名称(空字符串)的直接交换。它有一个特殊的属性,使它对简单的应用程序非常有用:创建的每个队列都会使用与队列名称相同的路由键自动绑定到它。

    我很确定这是 AMQP 规范的一部分。

    【讨论】:

    • 谢谢。即使命名了另一个绑定,您确定默认交换是绑定的吗?在使用“rabbitmqctl list_bindings”的教程中,它不会显示默认交换具有绑定...
    • 我在教程中使用了额外的... 表示他们省略了一些信息。 (假设你正在看这个:rabbitmq.com/tutorials/tutorial-three-python.html
    • 啊...我现在明白了。感谢您的帮助。
    • AMQP 规范讨论了“自动模式”,其中代理必须提供默认交换,并且队列具有默认绑定。对于具有指定绑定的队列,这是否是必需的似乎没有立场。
    猜你喜欢
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    • 2015-12-29
    相关资源
    最近更新 更多