Как зарегистрировать полученное сообщение в ZMQ Proxy? - PullRequest
3 голосов
/ 02 октября 2019

В ZMQ Proxy у нас есть 2 типа сокетов, ДИЛЕР и МАРШРУТИЗАТОР. Кроме того, я пытался использовать сокет захвата, но он не работал на основе того, что я искал.

Я ищу способ записать, какое сообщение получает мой прокси-сервер.

1 Ответ

3 голосов
/ 02 октября 2019

Q : способ протоколировать, какое сообщение получает мой прокси-сервер.

Самый простой способ - использовать APIv4 + напрямую поддерживает ведение журнала через сокет «захвата» ManInTheMiddle:

// [ROUTER]--------------------------------------+++++++
//                                               |||||||
// [DEALER]---------------*vvvvvvvv             *vvvvvvv
int zmq_proxy (const void *frontend, const void *backend, const void *capture);
// [?]---------------------------------------------------------------*^^^^^^^

Где capture должно быть либо { ZMQ_PUB | ZMQ_DEALER | ZMQ_PUSH | ZMQ_PAIR }

Если сокет capture не NULL, прокси-сервер должен отправлять все сообщения, полученные как frontend, так и backend, к гнезду capture.

Если это предоставление ZeroMQ API не соответствует вашим ожиданиям, не стесняйтесь выражать свои ожидания внастолько подробно, насколько это необходимо (и реализуйте либо «внешнюю» фильтрацию на основе capture -socket полезной нагрузки {message-content | socket_monitor ()}, либо можно создать совершенно новый пользовательский прокси-сервер регистрации, где вы выразилифункции будут реализованы с использованием ваших индивидуальных требований к конкретному варианту использования, реализованных в вашей спецификации приложениякод, прибегающий к повторному использованию, но чистый и понятный API ZeroMQ для всей логики DEALER -inbound / outbound- ROUTER передачи сообщений и фильтрации / обработки журналов. )

Я не могу представить себе другого способа выполнить задачу.

...