【问题标题】:ZMQ Socket solution for a 1-to-1 two-way communication with connection re-establishment?ZMQ Socket 解决方案用于 1 对 1 双向通信并重新建立连接?
【发布时间】:2013-11-22 12:57:48
【问题描述】:

我正在寻找一个支持 ZMQ 的解决方案,用于在连接到 0 个或 1 个对等方的绑定端点之间进行通信,仅此而已。通信是双向的,可以随时终止或切断连接;并且可以与新的对等方或同一对等方重新建立连接。如果绑定的端点在另一端没有对等点,是否阻塞或不阻塞都没有关系。

哪种 ZMQ 套接字对最适合这个用例?我最初在考虑 REP/REQ,但套接字对允许多个 REQ 连接到一个 REP,这是我不想要的;当有人断开连接时,它还需要处理“我正在等待接收/我要发送一些东西”的锁步范式。 PAIR 似乎也很糟糕,因为它不能自然地处理重新连接,但它具有我想要的“0 或 1 个对等点”限制。

有什么建议吗?

【问题讨论】:

    标签: sockets zeromq


    【解决方案1】:

    简短的回答:不幸的是,没有一种开箱即用的模式可以完全满足您的需求。

    最接近的模式是ZMQ PAIR to PAIR pattern。但是它在以下方面存在一些局限性:

    ZMQ_PAIR 套接字是为跨线程通信而设计的 zmq_inproc(7) 传输并且不实现诸如 自动重新连接。 ZMQ_PAIR 套接字被认为是实验性的, 可能还有其他缺失或损坏的方面。

    ROUTER 和 DEALER 是最灵活的模式。你可以控制它来设置你需要的限制。

    【讨论】:

    • 是的,我不太愿意重新实现自动重新连接逻辑,所以我想使用 DEALER/REQ,然后使用 Identity 的东西来构建一些独占锁定机制。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 2017-07-03
    • 1970-01-01
    相关资源
    最近更新 更多