AMQP RabbitMQ 信道范围



我正在使用带有node的amqplib.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是否仍然路由消息?

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

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

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

相关内容

  • 没有找到相关文章

最新更新