Является ли 0MQ протоколом, уровнем или и тем, и другим? Могу ли я использовать его вместе с STOMP?

Я запутался в узлах, будучи новичком как в STOMP, так и в 0MQ, но в двух словах я хочу облегчить взаимодействие между клиентами в браузере с помощью взаимодействия с PHP MOM или несколькими PHP MOM. Я рассматриваю возможность использования WebSocket для обеспечения постоянных дуплексных соединений (если они доступны) между клиентами браузера html5 и конечными точками MOM, а затем использовать эти конечные точки для облегчения связи между любым количеством клиентов браузера, которые могут быть связаны 1-1, 1- многие, многие-1 отношения.

Конечные точки MOM могут взаимодействовать с другими серверами или между собой для различных целей, и я считаю, что 0MQ может быть жизнеспособным способом быстрого обмена информацией между этими серверами. В качестве протокола для обмена сообщениями между клиентами STOMP выглядит хорошо (хотя я знаю о некоторых проблемах с определением протоколов)....

.... так вот моя точка путаницы. Чтобы использовать STOMP, MOM должен быть STOMP-брокером, а если это STOMP-брокер, то, поскольку 0MQ — это уровень обмена сообщениями «без посредника», разве я не лишусь цели использования обоих?

Чтобы уточнить, я рассматриваю 0MQ для связи MOM-MOM и STOMP для связи клиент-клиент.

Если, конечно, не существует способа перепрофилировать 0MQ для облегчения связи между клиентами? Я предполагаю, что моя настоящая путаница связана с 0MQ - это легкий уровень обмена сообщениями, а не протокол, или и то, и другое? Если это только уровень, могу ли я использовать 0MQ для передачи сообщений STOMP?

Если бы кто-нибудь мог пролить свет на 0MQ для меня, я был бы очень благодарен - спасибо!


person VLostBoy    schedule 14.07.2010    source источник


Ответы (1)


0MQ предоставляет бессерверный API-интерфейс, похожий на сокеты, поверх которого вы можете накладывать свои собственные протоколы. 0MQ передает простые неинтерпретируемые двоичные данные (хотя некоторые языковые привязки добавляют поддержку определенных сериализаций, таких как травление python или JSON).

В отличие от обычных сокетов, сокеты 0MQ могут быть «многие к одному», «один ко многим».

В 0MQ также есть понятие шаблонов обмена сообщениями — например, вы можете определить сокеты REQ/REP, которые применяют ограничение, согласно которому за каждым запросом должен следовать ответ — вам не разрешено отправлять два запроса подряд. Существуют различные другие шаблоны, подходящие для различных ситуаций.

См. Руководство по 0MQ и API

Итак, чтобы ответить на некоторые из ваших вопросов: 0MQ - это в основном уровень обмена сообщениями, и в принципе вы должны иметь возможность отправлять STOMP через сокеты 0MQ, как и для обычных сетевых сокетов. Однако я не уверен, что веб-клиент может использовать 0MQ напрямую — ему нужны языковые привязки и должны быть доступны собственные библиотеки ZMQ. Я думаю, что это исключает использование веб-клиента.

person DNA    schedule 21.05.2011