c# - 我们如何决定 PUSH/PULL 套接字应该使用 Bind() 还是 Connect()?

标签 c# zeromq

在研究 ZeroMQ 时,PUSHPULL 类型的套接字对我来说意义不大。据我了解,PUSH 套接字在发送时应始终为 .connect(),而 PULL 套接字应为 .bind(),因为它只接收数据。

通常的例子是这样的:

PUSH-PULL example 这是通常的设置方式:

  • 节点 A 有PUSH 套接字和绑定(bind)(为什么?)
  • 节点 C 具有PULL 套接字和绑定(bind)
  • 中间节点有PULLPUSH 套接字,但.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/

相关文章:

c# - 添加了在 visual studio 中未检测到的引用

c# - 如何使 autocad 插件在许多 autocad 版本上运行

c# - 如何使用 C# 从图像中裁剪十字矩形?

c# - 将构造函数参数传递给 Nunit 基类

c# - 如何在c#中使用open cv检测目标上的弹孔

java - 子服务器套接字关闭时如何制作ZMQ pub客户端套接字缓冲区消息

python - 从另一个线程中止 zeromq recv() 或 poll() - 立即且无需等待超时

networking - 阻塞操作和 ZeroMQ

c++ - Visual Studio 2015 社区 ZeroMQ 静态库链接错误

c# - 在 C#、SQL 2008 中脚本下载数千个文件的最佳方法