【发布时间】:2021-08-26 17:27:43
【问题描述】:
我正在将 NestJS 应用程序与 RabbitMQ 集成,我遵循了这个tutorial 从教程中我可以看到消息消费者可以使用队列名称连接到 rabbitMQ 代理,但实际上我想创建一个连接到交换的临时队列。我在教程中指定的队列选项中找不到指定交换名称的选项。有人可以指出正确的配置来指定交换而不是队列吗? 是否可以在“queueOptions”结构中指定交换名称?
【问题讨论】:
我正在将 NestJS 应用程序与 RabbitMQ 集成,我遵循了这个tutorial 从教程中我可以看到消息消费者可以使用队列名称连接到 rabbitMQ 代理,但实际上我想创建一个连接到交换的临时队列。我在教程中指定的队列选项中找不到指定交换名称的选项。有人可以指出正确的配置来指定交换而不是队列吗? 是否可以在“queueOptions”结构中指定交换名称?
【问题讨论】:
根据我从您的教程中了解到的(我不知道 NestJS),createMicroservice 仅连接到一个队列(或在需要时创建它)。也就是说,它执行assertQueue操作:
var queue = 'task_queue';
channel.assertQueue(queue, {
durable: false
});
如果要将队列绑定到现有的exchange,需要执行bindQueue操作:
channel.bindQueue(queue, exchange, '');
因此,您无法使用queueOptions 绑定到交换。看看official Rabbitmq documentation,尤其是“临时队列”和后面的“绑定”部分。
【讨论】: