ZMQ PUSHer没有PULLer

dbe*_*uer 4 zeromq

我有一个由PUSHer和多个PULLers组成的ZeroMQ网络.问题是拉出器的数量是未知的,并且在某些情况下,它可以是0.当后者发生时,socket.send(msg)似乎永远不会返回.如果我记得很清楚,PUB/SUB套接字不会发生这种情况.

当管道的另一侧没有拉出器时,有没有办法避免推包?

谢谢!

Pie*_*ens 8

您可以通过以下几种方式避免阻止:

  • 使用zmq_poll检查PUSH套接字何时准备输出,并仅在准备就绪时发送.
  • 使用非阻塞发送(zmq_msg_send方法上的ZMQ_DONTWAIT)
  • 在套接字上设置发送超时为零(ZMQ_SNDTIMEO套接字选项)并在发送超时时处理错误返回
  • 使用不同的套接字模式,例如ROUTER-DEALER,以及从客户端到服务器的更明确的信令