RabbitMQ и сообщение о задержке - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь RabbitMQ и следую этому уроку: https://www.cloudamqp.com/blog/2015-05-19-part2-2-rabbitmq-for-beginners_example-and-sample-code-node-js.html

Вот пример при получении сообщения:

function processMsg(msg) {
  work(msg, function(ok) {
    try {
      if (ok)
        ch.ack(msg);
      else
        ch.reject(msg, true);
    } catch (e) {
      closeOnErr(e);
    }
  });
}

Возможно ли вместо reject сообщения вернуть его в очередь с delay - для получения позже, возможно, через 30 минут?

1 Ответ

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

Существует плагин для RabbitMQ с именем RabbitMQ Delayed Message Plugin .Ссылка содержит пример, так как это запись в блоге от RabbitMQ.

Она в основном позволяет опубликовать сообщение с заголовком headers.put("x-delay", 5000);, что вам нужно.

Но я думаючто вам нужно использовать новый, специализированный обмен для этого.К счастью, args.put("x-delayed-type", "direct"); может иметь любой из существующих в настоящее время типов обмена (также пользовательских).

Я бы не рекомендовал делать это на стороне сервера (node-js), потому что, если вы не сохраните сообщение вбазы данных, он будет потерян, если сервер будет перезапущен.Кроме того, вы можете оказаться в ситуации, когда вас ожидает много тайм-аутов.

Очевидно, что плагин сохраняет сообщения, так что если сервер RabbitMQ будет перезапущен, сообщение все равно будет отправлено.

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