【发布时间】:2018-02-22 16:09:37
【问题描述】:
我有一个架构,其中有一个 ROUTER 套接字和多个 DEALER 套接字。
一些DEALER 套接字只会发送数据,一些只会接收数据,而另一些则可以混合使用两者。
我有一个场景,我有一个DEALER 套接字,它以极快的速度发送数据。此数据由另一个DEALER 接收,它将尽快处理此数据。发送速率总是高于接收速率。
在我当前的设置中,我的 ROUTER 套接字上的ZMQ_SNDHWM 被接收客户端命中,并且会静默丢弃消息。我不希望出现这种情况。
处理这种情况的最佳方法是什么?
我在不同的端口上查看了DEALER->DEALER,但这可能很难维护,具体取决于创建的会话数量,我可能每个会话必须有一个端口。
我能想到的解决这个问题的另一种方法是做一些流水线处理,其中接收的DEALER 套接字会告诉发送者它什么时候准备好接收,但这似乎给整个协议增加了很多复杂性以及更多的状态管理。它似乎也破坏了能够自然阻塞DEALER 套接字的能力,这正是我在这种情况下所需要的; DEALER 套接字永远不必与任何其他套接字通信。
【问题讨论】: