RabbitMQ:当队列为空时是否可以删除队列?

Tyl*_*rdt 5 javascript amqp rabbitmq node.js

理想情况下,我想在 RabbitMQ 中的队列变空时删除它们。基本上,我希望队列包含积压的消息,然后当发生某些事情时,这些消息将被发送,直到队列为空。一旦队列为空,我想删除它。

这可能吗?我正在使用节点。

Ram*_*ony -2

可以声明 RabbitMQ 队列,以便在没有消费者附加到该队列时自动删除该队列。您还可以指定一个生存时间值,即使没有消费者,队列也将保持活动状态的时间。更多信息在这里: https: //www.rabbitmq.com/amqp-0-9-1-reference.html(查找队列)和这里:http://www.rabbitmq.com/ttl.html#queue- TTL

由于您的问题被标记为javascript,您可能正在使用 squaremo 的 amqplib 库。以下是如何使用该库适当地声明队列:

var queueType = {durable: false, autoDelete: true, exclusive: false,
    arguments : {
        'x-message-ttl' : messageTTL,
        'x-expires' : queueTTL
    }
};

channel.assertQueue (qname, queueType_Shared)
Run Code Online (Sandbox Code Playgroud)

有关 sqmaremo 的 amqplib 的更多信息如下:http ://www.squaremobius.net/amqp.node/doc/channel_api.html

  • “没有消费者附加到它”是否也意味着“队列完成了所有消息的确认”?如果所有工作消费者都断开连接,但队列中仍有消息需要处理怎么办?队列会被删除并且所有消息都会丢失吗? (8认同)
  • 投反对票,因为问题问“当队列为空时”。对于时间和连接自动删除队列来说,这是一个很棒的答案。 (7认同)