2013-08-15 3 views
1

Может ли RabbitMQ работать в некотором смысле, я могу определить своего потребителя, что у него есть предел потребления одного и того же сообщения. т. е. мой потребитель делает базовое отклонение с enqueue = true. И он будет бесконечно продолжать слушать одно и то же сообщение. Я не говорю о TTL на стороне очереди. Но контроль/конфигурация над потребителем, чтобы сказать, что я хочу использовать это только 5 раз, а затем отправить его в другую очередь, например. Может ли это быть достигнуто?Может ли пользователь RabbitMQ настроить потребление только определенного количества попыток для одного и того же сообщения?

ответ

1

Это может быть сделано на уровне приложения или через TTL и Dead Letter Exchanges. Существует не известный способ, что вы хотите на брокера стороне (и я не вижу причин, почему вы не можете сделать это на стороне потребителя)

PS: просто сделать комментарий виднее

Основная идея для создания пользовательского свойства ttl (a-la hops count в пакетах TCP/IP) и уменьшения его при каждом использовании сообщения (и повторного публикации тела сообщения с новыми реквизитами). Когда он достигнет нуля - опубликуйте его в другой очереди.

+0

TTL скажет, что сообщения в этой очереди должны покинуть очередь после X раз. Это не совсем то, что я хочу. Я хочу от потребителя, чтобы настроить его на то, чтобы использовать одно и то же сообщение определенное количество времени, а затем отправить его в другую очередь. Можно ли это сделать с конца потребителя? не могли бы вы дать небольшой пример того, как это сделать? –

+0

Я не знаю точного синтаксиса java, как это сделать, но основная идея заключается в создании пользовательского свойства ttl (a-la hops count в пакетах TCP/IP) и уменьшении его при каждом потреблении сообщения. Когда он достигнет нуля - опубликуйте его в другой очереди. – pinepain

+0

Привет, zaq178miami, знаете ли вы API-вызовы для установки/получения TTL от cunsumer? –

1

Так что да, я считаю, что это можно сделать. Вам нужно будет кэшировать теги доставки полученных сообщений, а также отслеживать количество отказов. После того, как количество отказов для конкретного сообщения велико, и пять, а затем опубликуют сообщение в другую очередь. Вам также потребуется ACK вернуться к RabbitMQ для полученного сообщения и, вероятно, создать новое сообщение (с новым ярлыком доставки) и опубликовать его.

+0

Привет, tkeE2036. Есть ли способ отслеживать количество отказов со стороны брокера в rabbitMQ? Или мне нужно вручную сохранить статус в БД и отслеживать отбракованный счет оттуда. –

Смежные вопросы