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