Как обычно выполняется этот [тайм-аут для транзакции ответа / запроса]?
Мне грустно подтверждать, в родном API ZeroMQ ничего подобного нет. Принцип выполнения асинхронной доставки означает, что нет предела для доставки (в модели планирования с максимальными усилиями, или нет вообще).
Если вы новичок в ZeroMQ, вы можете быстро прочитать это 5-секундное чтение об основных концептуальных элементах в иерархии [ ZeroMQ менее чем за пять секунд ] Раздел .
Я хочу ... тайм-аут после 10 секунд , если ... получение запроса не ...
Может спроектировать использование .recv()
-метода в предварительно протестированном / защищенном после .poll( 10000 )
-методе метода, чтобы сначала явно обнаружить присутствие любого сообщение о том, что оно действительно доставлено в ваш код приложения, прежде чем когда-либо делать (или нет) вызов фактического .recv()
-метода только на ранее отредактированном POSACK-сообщении, чтобы быть готовым к локальному чтению, или может использовать немного больше «необработанный» подход, использующий обработчик с неблокирующей формой метода, с помощью вызова флага .recv( ZMQ_NOBLOCK )
, чтобы не тратить миллисекунду «там», в случаях, когда «там» нет сообщений для чтения прямо сейчас из локального Context()
-инженерного экземпляра и обработайте каждый из случаев соответственно в вашем коде.
Бонусное очко
Также имейте в виду, что использование шаблонного архетипа REQ/REP
-Scalable не будет проще, так как существует обязательный двухсторонний танец (конечно, если не умышленно, искусственно) ZMQ_RELAXED
), так что оба FSA-back-to-back-connected-FSA-s все равно должны будут ждать следующего «ожидаемого» удаленного события, прежде чем смогут получить возможность обрабатывать следующее локальное событие , Если вас интересуют подробности, можно найти множество постов о взаимных тупиках, которые невозможно избежать, которые можно избежать, что обязательно случится для REQ/REP
, где мы только не знаем, когда это произойдет, но уверены, что это произойдет.