首页 > 解决方案 > Nodejs:避免消费者创建临时的rabbitmq队列

问题描述

我正在使用rabbitmqtopic exchange来消费从客户端推送的消息。所以我创建了一个队列并将队列绑定到默认交换amq.topic

amqp.connect(uri, (error0, connection) => {
    if (error0) {
        throw error0;
    }
    connection.createChannel((error1, channel) => {
        if (error1) {
            throw error1;
        }
        channel.assertExchange(exchange, 'topic', {
            durable: true
        });
        channel.assertQueue('', { durable: true });
        channel.bindQueue('queue1', exchange, key);
        try {
            channel.consume('queue1', msg => {
                if (msg !== null) {
                    console.log(" [x] %s:'%s'", msg.fields.routingKey, msg.content.toString());
                }
            }, { noAck: true },);

但是每次 amqp 连接并使用消息时,Temporary queues创建并没有删除?

为什么当我有队列时会创建消耗时间的临时队列?以及如何避免创造?

在此处输入图像描述

标签: node.jsrabbitmq

解决方案


amq.gen-*当您尝试声明具有空白名称的队列时,将生成具有随机名称的队列。这里的问题是您将空白值作为队列名称传递。将相同的内容更改为以下内容。

channel.assertQueue('demo-queue', { durable: true });

有关详细信息,请参阅https://www.rabbitmq.com/tutorials/tutorial-one-javascript.html


推荐阅读