我有一个由 PUSHer 和多个 PULLers 组成的 ZeroMQ 网络。问题是 pullers 的数量是未知的,在某些情况下,它可能是 0。当后者发生时,socket.send(msg) 似乎永远不会返回。如果我没记错的话,PUB/SUB 套接字不会发生这种情况。
当管道的另一侧没有拉拔器时,有什么方法可以避免推送数据包?
谢谢!
我有一个由 PUSHer 和多个 PULLers 组成的 ZeroMQ 网络。问题是 pullers 的数量是未知的,在某些情况下,它可能是 0。当后者发生时,socket.send(msg) 似乎永远不会返回。如果我没记错的话,PUB/SUB 套接字不会发生这种情况。
当管道的另一侧没有拉拔器时,有什么方法可以避免推送数据包?
谢谢!
您可以通过多种方式避免阻塞:
简短回答:PUSH/PULL 和 PUB/SUB 具有不同的语义。
PUSH/PULL 在 pullers 之间分发推送的消息。当你想扇出并确保你的东西得到处理时,你可以使用它。如果没有人在听,那么它将阻塞。
PUB/SUB 将发布的消息广播给所有订阅者。如果没有人在听,那么消息就会丢失。
在我看来,PUB/SUB 更适合您的用例。毕竟,消息丢失的扇出没有任何意义。