RabbitMQ и MQTT: как предупредить третью сторону о неиспользуемых сообщениях?

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

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

Спасибо за помощь!


person user3684457    schedule 23.12.2014    source источник


Ответы (1)


Вы можете установить для каждого сообщения или на очередь TTL, а затем перехватывать просроченные сообщения с помощью Обмен недоставленными письмами. Это будет действовать как уведомление о остановленном или медленном потребителе или вообще об отсутствии потребителей.

person pinepain    schedule 23.12.2014
comment
как это на самом деле работает для темы MQTT? как мне настроить DLX для 10 клиентов и обязательно ставить в очередь сообщения только для тех клиентов, которые его не используют? - person user3684457; 23.12.2014
comment
MQTT работает поверх базы AMQP в реализации RabbitMQ, поэтому то, что я написал, может работать для вас, но это действительно зависит от того, как вы используете MQTT. Вы можете заранее создавать очереди с предустановленными настройками TTL и DLX и использовать их из MQTT. Затем создайте аварийную очередь и привяжите ее к DLX, а также используйте ее из MQTT для получения сообщений с истекшим сроком действия. В качестве альтернативы, если вы создаете очереди во время выполнения, вы можете использовать политики для установки TTL и DLX. На самом деле, не имеет значения, будете ли вы использовать его из MQTT или AMQP, я просто даю краткую идею. - person pinepain; 23.12.2014