#networking #zeromq
#сеть #zeromq
Вопрос:
Возможно ли использовать ZeroMQ в качестве промежуточной точки, где разные программы могут отправлять пакеты на ip:port
комбинированный или альтернативный сетевой интерфейс и заставлять ZeroMQ пересылать любые такие пакеты в определенном исходящем соединении?
Поэтому, по сути, я не хочу отправлять данные, сгенерированные мной программно, но предоставляю некоторую конечную точку для других приложений для беспрепятственной связи, как они всегда делали, но в основном используя ZeroMQ в качестве посредника, который будет соответствующим образом маршрутизировать трафик.
Ответ №1:
Вопрос: «… должен ли ZeroMQ пересылать какие-либо такие пакеты в определенном исходящем соединении? «
Учитывая, что существует встроенный способ избежать использования любого из распространенных архетипов шаблонов формальных коммуникаций ZeroMQ с масштабируемым формальным шаблоном ZeroMQ из арсенала { PUB/SUB | XPUB/XSUB | REQ/REP | XREQ/XREP | ROUTER/DEALER | PUSH/PULL | RADIO/DISH | CLIENT/SERVER | ... }
, есть шанс использовать «сырой» режим, когда действительно socket-FileDescriptor может начать обрабатываться инструментарием ZeroMQ { .poll() | .send() | .recv() }
. методы.
Для достижения успеха в вашем предполагаемом варианте использования, тем не менее, необходимо будет тщательно следовать опубликованной спецификации API, поскольку ZMQ_STREAM
сокеты имеют некоторые встроенные функции, которые должны быть отражены в вашей MiTM-прокси-обработке (удаление добавленного идентификатора, добавляемого по прибытии, поток-безопасность и т.д. ).
В любом случае, в то время как основная документация ZMQ-RFC стабильна, документация API отражает последние изменения, поскольку основная библиотека все еще продолжает развиваться, поэтому внимательно следите за тем, что вы реализуете (на основе текущей версии) и что следует учитывать для потенциальных дальнейших изменений версии и / или прекращенных функций.
Может быть интересно также использовать эти zmq_socket_monitor()
функции, поскольку в этом сценарии вы будете использовать класс, ориентированный на соединение tcp://
.