zeromq - 没有 PULLer 的 ZMQ PUSHer

标签 zeromq

我有一个由 PUSHer 和多个 PULLer 组成的 ZeroMQ 网络。问题是 puller 的数量是未知的,在某些情况下,它可以是 0。当后者发生时,socket.send(msg) 似乎永远不会返回。如果我没记错的话,这不会发生在 PUB/SUB 套接字上。

当管道另一侧没有拉拔器时,有什么方法可以避免推包吗?

谢谢!

最佳答案

您可以通过多种方式避免阻塞:

  • 使用 zmq_poll 检查 PUSH 套接字何时准备好输出,只有在准备好时才发送。
  • 使用非阻塞发送(zmq_msg_send 方法上的 ZMQ_DONTWAIT)
  • 将套接字上的发送超时设置为零(ZMQ_SNDTIMEO 套接字选项)并在发送超时时处理错误返回
  • 使用不同的套接字模式,例如ROUTER-DEALER 具有从客户端到服务器的更明确的信号
  • 关于zeromq - 没有 PULLer 的 ZMQ PUSHer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13615837/

    相关文章:

    java - 如何中断 JeroMQ 套接字上对 .read() 方法的调用?

    c# - 将文件发送到队列 RabbitMQ

    python - 如何在 Python 发布者和 C++ 订阅者之间实现简单的 ZeroMQ Pub-Sub 通信?

    python - 适用于通信进程的 Zmq 消息模式

    python - ZeroMQ 无法在 [0.0.0.0 :5555] - address already in use. 上的 Docker 上进行 .bind() 为什么?

    c++ - 未收到 ZMQ 消息

    node.js - ZMQ 发布/订阅订阅

    message-queue - ZeroMq 中发布-订阅和推拉模式的区别

    zeromq - 在pypy下安装zeromq

    c++ - zGuide for zeroMQ 编译失败