ZeroMQ PUSH / PULL и потерянное сообщение

Я использую ZeroMQ из .NET и застрял, пытаясь исправить странную проблему. У меня есть сокет типа PUSH и один типа PULL через TCP. Когда клиент отключается, сервер все еще может отправить сообщение (обратите внимание, что никакие флаги не передаются методу Socket.Send), которое получает полностью много, прежде чем начать блокировку и ждать, пока клиент повторно подключится и доставит сообщения, которые я пытаюсь отправить потом.

Как я могу избежать потери сообщения (или, в худшем случае, проверить, подключен ли клиент, а если не отправить фиктивное сообщение, которое я могу позволить себе потерять)?

Заранее спасибо!

Редактировать : дальнейшее тестирование показывает, что если я жду 1 секунду после отправки первого сообщения после отключения клиентом, второе будет заблокировано, но если я вообще не буду ждать, я могу отправить столько сообщений, сколько захочу, и они все потеряюсь. Это довольно сбивает с толку ...

6
задан em70 23 February 2011 в 20:42
поделиться