ZMQ Socket解决方案用于一对一双向通信并重新建立连接?

use*_*835 5 sockets zeromq

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

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

有什么建议么?

S.R*_*ond 2

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

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

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

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