gpt4 book ai didi

java - 了解与 Azure Groovy Java 一起使用的长轮询客户端逻辑

转载 作者:行者123 更新时间:2023-12-01 10:43:11 33 4
gpt4 key购买 nike

前提:我们有每分钟执行一次的常规脚本。我希望这些脚本之一打开 HTTP 客户端,并轮询服务总线队列/主题以获取消息。我让其余的客户端代码工作,从服务总线队列获取消息。我可以每 5 秒执行一次“Get”,wireshark 显示它正在重用相同的 TCP 连接,这比我预期的要好,但仍然不理想。

目标:我想让这个http客户端进行“长轮询”,以提高效率并实现实际的实时处理。事情似乎比我预想的要复杂。

问题:当我执行“删除”调用以从服务总线队列读取消息时,它立即返回“HTTP/1.1 204 No Content”,并且连接关闭。我在客户端设置了超时,但我认为这并不重要。

这里的文章显示服务总线说它支持长轮询,我认为这是最困难的部分。 Azure Service Bus Queues

我觉得我不明白如何在代码中实现长轮询的一些基本知识。我的理解是,当队列中没有数据时,它应该延迟响应,直到数据存在,或者直到我的客户端最终超时等待(这让我可以设置自己的断开/重新连接间隔)。我什至不关心阻塞/非阻塞等,因为脚本执行已经分散到线程池中,并将被强制终止等等。

非常感谢任何帮助。

最佳答案

正确而简单的答案是,将以下内容添加到 Azure REST API URL(带有服务总线)的末尾是使用该服务实现长轮询的方法: ?timeout=60 ,其中 60 告诉 azure 等待60 秒后响应无数据。因此,您的应用程序可以每 60 秒检查一次数据,每个 HTTP 请求的内部超时为 60 秒。这将使 TCP 连接在该时间范围内保持打开状态,等待 HTTP 响应。

关于java - 了解与 Azure Groovy Java 一起使用的长轮询客户端逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342013/

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