如果在nodejs中使用amqplib,队列太大,可以丢掉rabbitmq消息吗?

时间:2018-02-05 10:46:34

标签: node.js rabbitmq amqp node-amqplib

我在nodejs应用程序中使用amqplib。前端有一些繁重的处理,导致rabbitmq消息的接收延迟。使用rabbitmqctl list_queues监控我的队列时,等待处理的邮件数量永远不会停止攀升。

有没有办法设置我的频道,以便在队列有给定数量的消息等待时丢弃消息?

以下是我设置频道的方式:

amqp.connect('amqp://localhost')
    .then(conn => {
        return conn.createChannel();
    })
    .then(channel => {
        channel.assertQueue(q, {durable: false, autoDelete: true});
        channel.prefetch(1);
        channel.bindQueue(q.queue, topic, 'myroutingkey');

        return channel.consume(q, (msg) => {
            mycallback(channel, msg);
        });
    })
    .then(() => {})
    .catch(err => {});

1 个答案:

答案 0 :(得分:0)

感谢Jørgen指向rabbitmq doc的指针,我在amqplib文档中找到了等效文件,我可以通过将maxLength: 1添加到我的队列设置来强制执行删除行为

channel.assertQueue(q, {durable: false, autoDelete: true, maxLength: 1});