【问题标题】:amqp rabbitmq channel scopeamqp rabbitmq 通道范围
【发布时间】:2014-12-28 22:23:29
【问题描述】:

我正在将 amqplib 与 node.js 一起使用,并试图确保我理解 channels 的概念。

这来自 amqplib 文档:Channels are multiplexed over connections, and represent something like a session, in that most operations (and thereby most errors) are scoped to channels.

以下是一些基本代码,我将在其中打开 amqp 连接、创建通道、交换和队列:

var amqp = require('amqp/callback_api');
var connection = amqp.createConnection({ host: "localhost", port: 5672 });



connection.on('ready', function () {
    connection.createChannel(function(err, ch) {
        ch.assertExchange('1', 'fanout', function(err, ok) {});
        ch.assertQueue('a', {
            exclusive: true,
            durable: true
        }, function(err, ok) {

        });
    });

在上面的代码中,exchange '1'queue 'a' 是否只存在于定义它们的通道上?我的意思是,如果我要发布消息以从另一个渠道交换 a,那么交换 a 仍然会路由消息吗?

【问题讨论】:

    标签: node.js rabbitmq node-amqp


    【解决方案1】:

    所有实体(如交换、队列、消息)全局存在于代理上,并且对单个 vhost 内的所有连接和通道可见。没有例外。

    队列可以被定义为独占的,那么它们只存在于同一个连接中,当它关闭时它们被销毁。这是一种特殊情况,虽然它们仍然可见,但无法从其他连接访问。

    队列和交换都有auto-delete 选项,默认设置为true。这意味着它们将在使用后被删除(有关详细信息,请参阅 exchangequeue 自动删除文档)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 2013-02-15
      • 2012-09-09
      • 2014-06-29
      • 2020-05-08
      • 2020-12-26
      相关资源
      最近更新 更多