Задача: используя ZeroMQ организовать асинхронное IPC (а так же RPC в дальнейшем).
Надо чтобы один процесс в произвольные моменты времени мог кидать сообщения второму процессу, а второй процесс - так же асинхронно давать результаты обработки.
Что я пробовал: REQ/REP - проблема в том что только одна сторона может инициировать сообщения, и если да - то обязательно ждать ответа.
Далее, PUB/SUB - подписываешься и пакеты идет в одну сторону, и ответа ждать не надо. Проблема в том что для двунаправленной связи надо делать два канала туда-сюда.
Вопрос: Как правильно пользоваться ZeroMQ чтобы сообщения летали произвольно между одной и второй стороной, а при приходе - вызывался callback (чтобы не использовать polling или блокировки сидя во вспомогательном потоке)?
Поправьте если где ошибся. ZeroMQ уже использовал, мне бы понять как сделать именно то что мне надо.
ЗЫ У ZeroMQ 3.2.2 хороший API стал по сравнению с предыдущим 2.x, все сообщения возвращают понятное -1 при ошибке. Слышал мнения что там в случае ошибок ассерты валят программу, по крайней мере сейчас не так.