Ищу решение для опроса сообщений от брокера MQTT. Я кратко опишу решение здесь.
У нас есть класс контроллера на основе Spring, который предоставляет REST API для обработки определенных диагностических данных, связанных с автомобилем. С помощью одного из этих API Notify3P()
я создаю клиент Java MQTT и публикую сообщения на основе некоторых входных данных для брокера MQTT по заданной теме. Мое требование - уведомлять стороннюю систему каждый раз, когда клиент публикует сообщение в MQTT.
Система 3P собирается забрать сообщение от MQTT, как только получит уведомление. Затем ему необходимо получить сообщение от брокера MQTT через getMessage()
REST API (который нам нужно предоставить в указанном выше классе контроллера). getMessage()
API должен опрашивать MQTT на наличие уже опубликованных сообщений и передавать их в систему 3P. Затем система 3P произведет некоторую обработку и отправит ответ нашей системе через другой REST API postMessage()
, представленный в нашем классе контроллера. postMessage()
должен опубликовать сообщение в теме response
на MQTT. Мне нужен другой REST API checkResponse()
, который затем опрашивает response
тему MQTT и отправляет ответ клиенту.
Что я сделал до сих пор: при запуске приложения у меня есть запускаемый компонент, который прослушивает темы MQTT request
и response
. Теперь я публикую данные в request
теме с помощью REST API Notify3P()
. Я прикрепил обратный вызов к компоненту запуска, который получает сообщение. Проблема возникает, когда 3P необходимо вызвать мой контроллер для опроса сообщения от MQTT.
Я не понимаю, как удерживать сообщения в MQTT и потреблять их по запросу. Есть ли в MQTT механизм для этого? Также, как только система 3P отправляет сообщения на response
, как мне опросить тему response
, чтобы получить ответ от MQTT и отправить его клиентам моего Контроллера?
Надеюсь, описание проблемы имеет смысл. Если есть какое-либо решение от кого-либо, пожалуйста, опубликуйте его. Любой пример кода будет большим подспорьем.
Заранее спасибо!!