在研究 ZeroMQ 时,PUSH
和 PULL
类型的套接字对我来说意义不大。据我了解,PUSH
套接字在发送时应始终为 .connect()
,而 PULL
套接字应为 .bind()
,因为它只接收数据。
通常的例子是这样的:
- 节点 A 有PUSH 套接字和绑定(bind)(为什么?)
- 节点 C 具有PULL 套接字和绑定(bind)
- 中间节点有PULL 和PUSH 套接字,但
.bind()
没有,并且.connect()
两者。
如何我们如何决定 PUSH/PULL 套接字应该是 .bind()
还是 .connect( )
-ed?
最佳答案
通常,系统中更稳定的部分(“服务器”)将绑定(bind),而更短暂的部分(多个“客户端”)将连接。
大多数 ZeroMQ 套接字可以绑定(bind)(充当服务器)或连接(充当客户端)。您可以先连接然后再绑定(bind)。客户端将继续尝试连接,直到服务器启动。这是 ZeroMQ 的一个非常好的特性。
在 PUSH/PULL 的情况下,绑定(bind)和连接都可以。对于 PUB/SUB、ROUTER/DEALER 等也是如此。
在图中,您可以在运行时添加或删除中间节点,而无需重新配置或重新启动节点 A 或 C。这可能就是他们选择绑定(bind) A 和 C 的原因。
关于c# - 我们如何决定 PUSH/PULL 套接字应该使用 Bind() 还是 Connect()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41056664/