gpt4 book ai didi

java - ZeroMQ中设置超时的困境

转载 作者:行者123 更新时间:2023-11-30 02:22:59 25 4
gpt4 key购买 nike

我目前使用 ZeroMQ 和 Java 绑定(bind)。我的程序处于 PUB/SUB 模式。设置超时似乎是合理的,但客户端无法从 PUB 端接收消息。

但是对于发送消息没有固定频率的发布服务器来说,很难确定合理的超时时间。

另一方面,如果没有设置超时,那么程序可能会卡在函数中:

recv()

甚至发布服务器也永远死了。

是否有好的解决方案来解决这个问题?

最佳答案

是的,有一两个好的解决方案:

最好的解决方案是使用 Poller 实例,其中 .poll() 方法再次使用在 [ms] 内显式配置的 aTimeOut 的帮助下,是否有任何传入消息尝试非阻塞 .recv() 方法,或者甚至不尝试这样做,一旦调用 .poll() 方法时出现任何此类消息的 NACK(有关详细信息,请检查 API)。

另一种方法是使用非阻塞模式调用 .recv( aSockINST, ZMQ_DONTWAIT ) 方法。在这里,API + 包装器/绑定(bind),指定它如何处理一种状态,其中没有此类消息在本地准备好获取 .recv()-ed,以便可以依赖公共(public)语言的可用语法-脚手架 - 就像 { try: except: finally: }{ try: catch: }{ defer; panic (); recovery() } - 处理 .recv( .., ZMQ_DONTWAIT ) 调用的任一返回状态。类似的规则适用于(几乎)阻塞调用,具有一些适度较小的 .recv() 超时。

关于java - ZeroMQ中设置超时的困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46334424/

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