【发布时间】:2021-02-14 20:57:54
【问题描述】:
我必须使用 Java 和 SpringBoot 构建一个服务,该服务将负责通过 API 轮询应用程序,直到满足条件。所以我正在发送 POST 请求,应用程序必须做一些事情。然后我向这个应用程序发送 GET 请求并获取数据。我正在检查任务是否完成。如果没有,我需要再发送一次这个 GET 请求,例如。每 10 秒。如果分析完成,那么我应该停止轮询。我尝试使用调度程序,但检查条件存在问题。 Runnable 对象不能返回任何值,所以我不能在适当的时候取消任务。第二件事是我可以同时有多个任务进行轮询。您知道如何解决我的问题吗?
【问题讨论】:
-
您想为每个任务分配不同的线程吗?您有可以跟踪请求的表格吗?
-
我可以在数据库中存储有关请求的信息。关于线程,很难说。我不知道我可以同时期待多少个请求。但可能我可以有多个线程。或者,也许我应该限制要处理的请求数量,而其余的则保留在队列中?
-
你说你会发送POST请求,但是这些请求是如何发起的呢?您是否收到来自另一个应用程序的请求,或者您基于某些不同的业务逻辑调用 POST?我之所以这样问,是因为如果您公开自己的 api 而不是进一步传递它,我认为在同一个线程上进行 get pooling 不是一个好主意,因为您最终可能会同时使用多个活动线程.
-
是的,我将收到来自另一个应用程序的请求,然后我必须稍微修改该请求并向第三个应用程序发出新的 POST 请求。所以我的应用程序将位于该链的中间。
-
好的,GET 询问的目的是什么?您是否必须以任何方式通知他们?我认为他们不会等到处理完成。
标签: java spring api task polling