Рекомендации RabbitMQ для обработки исключений при асинхронной обработке сообщения - PullRequest
0 голосов
/ 14 ноября 2018

Зарегистрирован асинхронный получатель сообщения rabbitmq. Не получили официальных предложений, как обработать исключение процесса в асинхронном действии потребителя?
Возможно, потребуется повторить сообщение очереди / повторно опубликовать сообщение в очереди с ограничением времени повторения.

1 Ответ

0 голосов
/ 14 ноября 2018

При использовании из очереди в rabbitMq вы можете установить опцию noAck, которая может иметь значение true или false.

  • true она получит сообщение в случае ошибки, которую не может обработать
  • false автоматически уберет сообщение и останется в очереди, которая будет извлечена позже.

(Это будет зависеть от языка, который вы используете для своего потребителя. NoAck = nodejs, autoAck = c # и т. Д.)

consumer.consume(q.queue, function (message) {
    // your code
}, {noAck: false});

InЧто касается установки ограниченных повторных попыток, я должен был сделать это сам, передав счетчик повторов в заголовке передаваемого мной сообщения и должен был подтвердить сообщение, которое я читал, перед отправкой новой версии с измененным заголовком обратно в очередь.Я использовал несколько очередей для обеспечения целостности сообщений, но это можно сделать с помощью одной очереди.

Надеюсь, это помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...