Я новичок в RabbitMQ.Я хочу выполнить только один элемент за раз, следующий будет использован после завершения предыдущего.
Вот как создается Потребитель:
consumer.assertQueue(queue, { durable: true });
consumer.consume(queue, handleMessage, { noAck: false });
Вотfunction handleMessage:
async function handleMessage(message) {
console.log('handleMessage', message.content.toString());
// wait for 1 second
await wait(1000);
console.log('ACK', message.content.toString());
consumer.ack(message);
}
Издатель будет отправлять такие элементы:
publisher.sendToQueue(queue, Buffer.from('1'));
publisher.sendToQueue(queue, Buffer.from('2'));
Вот журнал.Кажется, он не ждет, когда процесс дескриптора ожидает 1 секунду до завершения:
handleMessage 1
handleMessage 2
ACK 1
ACK 2
То, что я хочу:
handleMessage 1
ACK 1
handleMessage 2
ACK 2
Среднее сообщение 1 должно быть завершено, прежде чем обрабатывать сообщение 2. Как мне это сделать?Благодаря.