За сообщение TTL поведение с лопатами - PullRequest
0 голосов
/ 28 августа 2018

Лопата

  • потребляет сообщения из очереди,
  • повторно публикует каждое сообщение для брокера-получателя (используя по умолчанию оригинальное имя обмена и Rouing_key, когда применимо).

Я не смог найти документацию, каково ожидаемое поведение для TTL сообщений, когда используются лопатки:

  • Время начала расчета TTL при получении сообщения у исходного брокера или у конечного брокера? Или это действительно только для первой публикации, то есть у исходного брокера?

  • Что произойдет, если время истечения истечет до того, как сообщение достигнет брокера назначения?

1 Ответ

0 голосов
/ 28 августа 2018

Итак, я думаю, что вы ответили на вопрос в документации, которую вы вставили. Все, что делает shovel, - это перемещает сообщения из одной очереди в другую, повторно публикуя их в процессе. Он сохранит все исходные свойства сообщения, которые теоретически включают свойство TTL.

При этом я не верю, что вам нужно о чем-то беспокоиться.

  1. Сообщение TTL запускается, когда очередь получает сообщение. Когда сообщение повторно публикуется, часы сбрасываются в новой очереди.
  2. Сообщения, транспортируемые с помощью shovel, в идеале должны тратить не более нескольких миллисекунд в исходной очереди, если они вообще туда попадают (очередь сообщений с подключенным потребителем фактически не ставит в очередь сообщения в большинстве случаев. ). Таким образом, время, проведенное в первой очереди, должно быть настолько маленьким, что это не имеет значения.
  3. Время жизни сообщения должно иметь достаточный допуск для сетевого транспорта и т. Д., Поэтому действия shovel соответствуют нормальному шуму.

Если вы попадаете в ситуацию, когда в очереди накапливается большое количество сообщений, прежде чем они могут быть shovel 'd, вам может потребоваться обработать истечение срока действия в вашем приложении. В этом есть и другие преимущества и предостережения, но в целом вы получаете более тонкий контроль.

...