Как пропустить старые сообщения при подключении к производителю RabbitMQ

Я изучил политики истечения срока действия и TTL для сообщений и очередей, но не уверен, что это лучший способ выполнить то, что я пытаюсь сделать.

В идеале, когда мой потребитель подключается к моему отправителю, я хочу пропустить все старые, непринятые сообщения и получать только сообщения, отправленные после подключения. В Kafka это было достигнуто путем настройки потребителя на поиск очереди до конца, прежде чем начать потребление большего количества сообщений. Прямого эквивалента RabbitMQ для этой функции, похоже, не существовало, но я должен представить, что есть более эффективный способ добиться этого, не делая TTL или истечение срока для сообщений очень короткими.

Как использовать только сообщения, полученные после подключения к производителю RabbitMQ?


person Taylor Lopez    schedule 02.07.2020    source источник


Ответы (1)


Что в итоге сработало для нас, так это настройка производителя во время публикации, а не настройка потребителя.

channel.basic_publish([other params], properties=pika.BasicProperties(expiration='1000'))

Это приводит к тому, что сообщения истекают через одну секунду, что было достаточно для наших нужд.

person Taylor Lopez    schedule 11.08.2020