c# – ZeroMQ,由DEALER发送的消息 – >已断开连接的ROUTER不会被丢弃.怎么改变?

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

如何确保在此期间由DEALER发送的任何和所有消息都将被丢弃/丢弃?在再次绑定ROUTER套接字时,接收源自DEALER的大量消息.我希望丢弃所有发送到ROUTER套接字的DEALER发送消息,而不绑定ROUTER套接字.有没有办法调整设置?请注意,ROUTER插座可能无法以受控方式关闭或处理,因为我也想处理完整的应用程序崩溃.

非常感谢任何指针……

解决方法:

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

查看http://zguide.zeromq.org/page:all并阅读“Paranoid Pirate Pattern”.偏执的海盗工人也有同样的问题.它是连接到ROUTER的DEALER插座,需要在ROUTER发生故障时重新连接.

此解决方案使用心跳来确定连接何时消失.该指南警告说,正确的心跳可能很困难,因此在考虑替代方案时请记住这一点.

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

上一篇:ZeroMQ PUB / SUB无法使用PHP


下一篇:使用带有voryx Thruway WAMP消息系统的php发送消息