我刚开始使用ZMQ。我正在设计一个工作流程为:
我认为PUSH / PULL体系结构适合于此。请对此进行 指正 。
但是,如何处理这些情况?
那么如何在PUSH / PULL模型中设置 超时 等内容?
编辑 :感谢user938949的建议,我得到了一个 有效的答案 ,我在后人中分享。
如果使用zeromq> = 3.0,则可以设置RCVTIMEO套接字选项:
client_receiver.RCVTIMEO = 1000 # in milliseconds
但通常,您可以使用轮询器:
poller = zmq.Poller()
poller.register(client_receiver, zmq.POLLIN) # POLLIN for recv, POLLOUT for send
并poller.poll()
超时:
evts = poller.poll(1000) # wait *up to* one second for a message to arrive.
evts
如果什么也收不到,将是一个空列表。
您可以使用轮询zmq.POLLOUT
,以检查发送是否成功。
或者,要处理可能失败的对等方,请执行以下操作:
worker.send(msg, zmq.NOBLOCK)
可能就足够了,它将始终立即返回-如果发送无法完成,则引发ZMQError(zmq.EAGAIN)。
我刚刚意识到,当只有一个消费群体存在时,XACK不会自动删除消息。 我以为当所有的消费者组都收到相同的消息时,消息会被Redis-server删除,但似乎不是这样。 因此,Redis流内存无限增加,因为没有消息会被删除。 也许防止这种情况的唯一方法是手动发送XDEL消息?但我怎么知道所有的消费者群体都接受了这个信息呢? 需要一些帮助,谢谢!
问题内容: 我有这样的代码: 我的问题是,节点在运行时立即终止。它显示“ Icanhasclient”,但没有调用回调内的console.log。 (本例中的mysql是node- mysql 。 有什么办法可以使node.js在退出之前等待回调完成? 问题答案: 回调未排队 节点运行直到所有事件 队列 都为空。诸如以下的调用时,回调将添加到事件 队列 中 已执行。该调用是模块开发人员编写的代码的
我有一个cron,它正在使用fwrite函数,在cron运行1小时后,它将崩溃并出现错误: fwrite():发送29字节失败,对等方重置了errno=104连接 在线: 在这之后,我总是通过 似乎PHP内核和DNS解析器内部有问题,因为在这之后,我在将主机名解析到ip地址时遇到了一些问题。在我的函数中,还使用了和函数。如何预防这些问题?
有没有更好的写法呢?由于某种原因,我真的需要这个循环吗?(似乎与有关)
问题内容: 我的存储库每5分钟就会收到一次轮询。 但是我发现,如果jenkinsfile被完全破坏,则管道将失败,并显示“此阶段没有步骤”。 然后每5分钟它将重试一次并保持失败。 我该如何防范呢?我可以在某个地方设置阈值,以便这种情况不会永远消失吗? 问题答案: 如果使用的是scm轮询,则只有在发生更改时才应构建。听起来您可能正在按计划进行计划。这是声明性管道中每种语法的不同。 或者您可以做的是从
我正在尝试做一个数字猜测游戏,如果用户匹配他们赢得现金的幸运数字,游戏将继续进行,直到他们用完现金。他们每打一轮都要付赌注。每一轮都会产生一个新的随机数。 我只想使用一个输入。当我把输入放在循环中,循环无限停止循环,当我把它放在循环外,它无限开始循环。我该怎么阻止这一切?我需要向while循环添加什么?我尝试突破,但我想继续比赛,直到钱用完。 我只想使用一个输入,但是当我把输入带出循环(lucky
问题内容: 我发现经典的Java Deadlock Tutorial 中包含对System.out.format的调用将防止死锁的发生,我不知道为什么。 下面的代码是相同的教程,与除的 这是输出: 删除违规行会导致通常的死锁: 对System.out.format的调用是否以某种方式改变了线程获取对象内在锁的方式? 更新: 通过更改代码中启动线程的位置,我能够使系统再次陷入僵局: 这就引出了一个问
问题内容: 我的侧边栏中有一个使用嵌套列表( 和 标记)的分层导航菜单。我使用的预制主题已经具有列表项的样式,但是我想更改顶级项的样式,但不能将其应用于子项。是否有一种简单的方法可以将样式应用于顶级列表项标签,而无需将样式层叠到其子级列表项?我知道我可以在子项目中显式添加重写样式,但是如果有一种简单的方法,只是说“将这些样式应用于此类并且不要级联,我真的很想避免必须重复所有样式代码”他们将其归