node-amqp, ограничить время сокета для событий прослушивания

Предполагая, что мне нравится 100000 событий в моей очереди rabbitmq, каков наилучший способ ограничить систему для обработки их последовательно, а не пытаться потреблять все сразу?

Я пробую несколько вариантов, однако машина зависает, пытаясь обработать их все сразу.


person andresmijares    schedule 28.01.2018    source источник


Ответы (2)


Вы можете сделать (при условии, что вы используете amqplib)

channel.get('queueName', (err, msgOrFalse) => {
    if (err) { 
        // Handle err
    } else if (msgOrFalse) {
       // Handle message
    }
};

Это получает сообщения одно за другим, так что это не все сразу. Конечно, вам нужно неоднократно звонить.

person Terry Lennox    schedule 28.01.2018

Я нашел свой ответ, мне просто нужно использовать prefetch, чтобы убедиться, что я могу обрабатывать n значений одновременно.

person andresmijares    schedule 28.01.2018
comment
Это имеет смысл, вы можете ограничить количество неподтвержденных сообщений в очереди. И предположительно это ограничивает нагрузку на клиентскую машину. - person Terry Lennox; 29.01.2018