Node.js:避免由使用者创建临时RabbitMQ队列

时间:2019-10-14 09:33:26

标签: node.js rabbitmq

我正在使用Rabbitmq topic 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并没有删除它?

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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

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

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