Я не могу найти нигде в руководстве или RFC, если при использовании сокетов REQ / REP, предположим, что я успешно отправил сообщение через сокет REQ, это гарантирует, что сокет REP получил сообщение?
Если нет, то как вы вводите надежность одного клиента / сервера, используя таймауты, когда вызовы recv не блокируются (в соответствии с RFC) на сокете REP.
Если это звучит странно, не стесняйтесь перечитать Zen-of-Zero и наслаждаться этими несколькими принципами дизайна, которые позволили ZeroMQ стать настолько высокопроизводительной средой с малыми задержками.
Существует одна косвенная гарантия — атомная доставка — сообщение либо доставляется полностью и без ошибок, либо не доставляется вообще. То есть, нет никаких случаев получения каких-либо искаженных посылок на стороне получателя, однако для отправителя нет гарантии, что сообщение будет доставлено.
Существует большое пространство для реализованных пользователем верхних уровней поверх тривиального протокола ZeroMQ, который может вводить контролируемые во времени запросы на повторную отправку или другие средства для усиленных политик принудительного применения доставки.
Других решений пока нет …