У нас есть IoT-инфраструктура с устройствами, обменивающимися данными через MQTT. Однако теперь у нас также есть требование, чтобы эти устройства отправляли данные датчиков в очередь для облачной обработки, которая оценивает и сохраняет их.
Поскольку MQTT не поддерживает вытягивающую модель, в настоящее время я рассматриваю возможные службы очередей для использования. ActiveMQ Artemis привлек мое внимание из-за различных протоколов, которые он поддерживает, среди прочего MQTT и REST-интерфейса.
Однако я не могу четко увидеть в документации, может ли Artemis просто служить в качестве единого брокера для нескольких очередей сообщений или действительно ли ее можно использовать для преобразования между ними. До сих пор планировалось, что MQTT-клиент будет подписан на тему «обработки», которая будет собирать все опубликованные в нем сообщения и помещать их в очередь для опроса, где работники будут приходить их забирать. Кажется, что есть вероятность, что Artemis сможет сделать это без запуска дополнительных служб, но я совершенно не уверен, правильно ли я интерпретирую документацию.
Итак, зададим простой вопрос: могу ли я оснастить Artemis таким образом, чтобы я мог публиковать сообщения MQTT и затем опрашивать их из очереди, используя, например, REST-интерфейс?
Обычно для интеграции приложений используются брокеры сообщений. Таким образом, вы обычно можете отправлять сообщения с помощью одного протокола и использовать их с помощью другого. Так обстоит дело с ActiveMQ Artemis. Вы, безусловно, можете опубликовать сообщение с помощью MQTT, а затем использовать его с помощью интерфейса REST.
Тем не менее, я бы рекомендовал использовать протокол STOMP, а не интерфейс REST. Протокол STOMP стандартизирован, тогда как интерфейс REST уникален для ActiveMQ Artemis. STOMP очень прост и может использоваться в большинстве (если не во всех) местах, где будет использоваться клиент обмена сообщениями REST. Многие брокеры реализуют STOMP, поэтому, если вам когда-либо понадобится перейти на другого брокера, работа будет значительно проще.