Поведение TTL для каждого сообщения с лопатами

Лопаты

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

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

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

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


person SHB    schedule 27.08.2018    source источник


Ответы (1)


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

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

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

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

person theMayer    schedule 28.08.2018