gpt4 book ai didi

c# - ZeroMQ,DEALER -> disconnected ROUTER 发送的消息不会被丢弃。如何改变呢?

转载 作者:太空狗 更新时间:2023-10-30 00:53:15 24 4
gpt4 key购买 nike

我有一个连接到 ROUTER 套接字的 DEALER 套接字,但是,ROUTER 套接字有时可能会取消绑定(bind)并重新绑定(bind)到同一端口(由于应用程序关闭并重新启动绑定(bind)套接字)。

我如何确保经销商在此期间发送的任何和所有消息都将被丢弃?当 ROUTER 套接字再次绑定(bind)时,就会收到大量来自 DEALER 的消息。我希望在未绑定(bind) ROUTER 套接字时丢弃所有发送到 ROUTER 套接字的 DEALER 原始消息。有没有办法调整设置?请注意,ROUTER 套接字可能不会以受控方式关闭或处置,因为我也想处理完整的应用程序崩溃。

非常感谢任何指点...

最佳答案

需要增强控制 DEALER 套接字的进程,以检测到 ROUTER 的连接是否消失。然后您需要关闭 DEALER 套接字(将 LINGER 设置为 0,以便丢弃任何排队的消息),创建一个新套接字并再次连接。并定期重复,直到建立连接。

查看 http://zguide.zeromq.org/page:all并阅读“偏执海盗模式”。偏执的海盗 worker 也有同样的问题。它是一个连接到 ROUTER 的 DEALER socket ,当 ROUTER 宕机时需要重新连接。

此解决方案使用检测信号来确定连接何时断开。该指南警告说,可能很难正确设置心跳,因此在考虑替代方案时请记住这一点。

另一种方法:注意 3.2 API 包括新的套接字监视器 API,它创建一个 PAIR 套接字,可用于监视现有套接字的状态。这可能允许您在不使用心跳的情况下检测到 DEALER 与 ROUTER 的连接已经消失——但我自己没有使用过这个 API。一旦检测到连接断开,关闭套接字,重新连接,重复上述操作。

关于c# - ZeroMQ,DEALER -> disconnected ROUTER 发送的消息不会被丢弃。如何改变呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17208376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com