Написание адаптера AMQP для MQTT без посредников - PullRequest
0 голосов
/ 14 февраля 2020

Я хочу реализовать адаптер amqp to mqtt, который будет принимать сообщения amqp, получать их полезную нагрузку и публиковать sh как mqtt-сообщения моему брокеру mqtt. Поэтому адаптер должен иметь возможность

  • прослушивать порт
  • подтверждать запросы на подключение
  • получать сообщения amqp
  • подтверждать их
  • publi sh с mqtt

В моей экосистеме я хочу предоставить разные протоколы для входящих сообщений, но я хочу запустить только одного брокера mqtt. Я хочу избежать любого другого брокера. Я прочитал здесь , что amqp "1.0 разрешает непосредственную связь без посредников". Я думаю, это было бы правильным для моего случая использования (хотя было бы неплохо использовать amqp 0-9-1).

У меня проблемы с подходом для этого. Клиентская библиотека rabbitmq, похоже, предназначена только для связи между клиентом и брокером.
Я также прошел репо qpid . С их библиотекой брокеров я могу запустить встроенный брокер в своем собственном проекте, как показано здесь . Это хороший трюк, но это не то, что мне нужно.
Мне не проблема с mqtt. Что меня беспокоит, так это часть «ожидания сообщений amqp».

Я изучал пару часов. Я здесь слепой? Или это действительно необычно / сложно?
Я был бы очень признателен за любые советы относительно возможных библиотек или примеров от вас или из Интернета.

Спасибо.

1 Ответ

1 голос
/ 15 февраля 2020

В зависимости от языка, который вы используете, вы можете использовать либо протокольный движок Qpid proton- c, либо proton-j и внедрить свой собственный компонент серверного стиля AMQP 1.0 в памяти, который может прослушивать сокет сервера и затем принимать входящий AMQP 1.0 соединения и разберитесь с сообщениями, как считаете нужным. Это требует от вас достаточно глубокого понимания протокола и реализации достаточного количества логики c, чтобы иметь дело с разнообразием поведения клиента, которое вы могли бы видеть, учитывая общую гибкость протокола AMQP 1.0.

Вы можете сэкономить немало усилий, используя одного из многих мультипротокольных брокеров, таких как ActiveMQ Artemis или некоторых других, чтобы справиться со всем этим для вас. Я думаю, что вы могли бы использовать некоторый код более высокого уровня в протонных клиентах C ++ или C, чтобы помочь, если вы хотите go по-своему, но это все равно будет трудом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...