【问题标题】:RabbitMQ: Is it possible to delete queues when they are empty?RabbitMQ:队列为空时是否可以删除?
【发布时间】:2015-09-18 02:09:48
【问题描述】:

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

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

【问题讨论】:

    标签: javascript node.js rabbitmq amqp


    【解决方案1】:

    可以声明一个 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)
    

    关于 sqmaremo 的 amqplib 的更多信息在这里:http://www.squaremobius.net/amqp.node/doc/channel_api.html

    【讨论】:

    • “没有消费者附加到它”是否也意味着“队列完成了它所有的消息”?如果所有工作消费者都断开连接但队列中仍有消息需要处理怎么办?队列会被删除,所有消息都会丢失吗?
    • 投反对票,因为问题是“当队列为空时”。这是时间和连接自动删除队列的绝佳答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    相关资源
    最近更新 更多