2014-12-23 2 views
1

Я использую RabbitMQ с плагином MQTT, с производителем и потребителем по QoS = 1. Я все еще очень новичок в RabbitMQ, поэтому я хотел бы понять, есть ли способ/эффективный шаблон, чтобы обеспечить резерв в случае, если потребитель не потребляет сообщения той темы, на которую он подписался.RabbitMQ & MQTT: как предупредить третью сторону неиспользуемых сообщений?

Например, идея, заключающаяся в том, чтобы отправить предупреждение на сервер, через несколько секунд запускает еще один канал (электронная почта, push-уведомление), если клиент не потребляет сообщения темы MQTT?

Благодарим за помощь!

ответ

1

Вы можете установить per-message или per-queue TTL, а затем уловить истекшие сообщения с помощью расширения Dead Letter Exchanges. Это будет действовать как уведомление о заторможенном или медленном потребителе или вообще о потребителях.

+0

Как это работает на тему MQTT? как настроить DLX для 10 клиентов и не забудьте только отправлять сообщения в очередь для клиентов, которые его не потребляют? – user3684457

+0

MQTT работает поверх базы AMQP в реализации RabbitMQ, поэтому то, что я написал, может работать для вас, но это действительно зависит от того, как вы используете MQTT. Вы можете предварительно создать очереди с установленными настройками TTL и DLX и использовать их из MQTT. Затем создайте аварийную очередь и привяжите ее к DLX, а также используйте ее из MQTT для получения истекших сообщений. Кроме того, если вы создаете очереди во время выполнения, вы можете использовать политики для установки TTL и DLX. На самом деле, неважно, будете ли вы использовать его из MQTT или AMQP, я просто даю краткую идею. – pinepain