java - 如何在不轮询的情况下从 Java Web 应用程序获取响应?

标签 java asynchronous webhooks polling

我有一个 Java Web 应用程序,其中有一个 API 从 CouchBase 进行大量读取。因此,调用经常会超时。我有以下解决方案:

  1. 要么从前端多次调用来获取数据(将使用检查点逻辑,发送的数据大小将基于用户的网络带宽)。在 Java Web 应用程序中实现此目的的方法有哪些?

  2. 我的网络应用程序可以异步更新响应构建的前端。一旦所有读取完成,UI 就可以读取响应:

a. UI 可以轮询(直接或通过排队机制间接) b.使用网络钩子(Hook)?

可以通过哪些方式实现1.和2.?

最佳答案

这是一个关于模式的问题。非常典型的解决方案是切换到异步服务 - 这是您问题中的选项 2。服务器接收请求,对其进行验证,并向客户端回复 Ack(知识)响应,该响应可能包含服务器生成的请求 ID 以及提供响应的方法(通常是队列)。然后,客户端监听队列以获取与请求 ID 相关的响应。

另一种选择是所谓的长轮询。可以在这里找到对该概念的详细描述:What is HTTP Long Polling?

关于java - 如何在不轮询的情况下从 Java Web 应用程序获取响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53929758/

相关文章:

java - 如何在java中使用json数据/json响应创建pojo类?

java - 推荐一种更好的Java中将同步方法转为异步的方法

javascript - javascript 加载器是否取代了脚本组合的需要?

java - 为什么我的 Java 服务器代码在尝试从 stripe 接收 Webhook 时抛出 502 错误?

amazon-web-services - AWS Lambda-如何处理异步(AWS S3)触发器上的错误?

Java获取线程实例的数量

java - 使用随机访问文件java实现散列

java - Facebook SDK ShareDialog.canShow()==否,不调用sharedialog

node.js - 使用异步代码的AWS Lambda返回NULL

sendgrid - 如何指定 SendGrid 用于从中发送 Webhook 事件的 IP 地址