轮询应用程序,直到在 Spring Boot 中满足条件
Polling application untill condintions are met in SpringBoot
我必须使用 Java 和 SpringBoot 构建一个服务,它将负责通过 API 轮询应用程序直到满足条件。所以我发送 POST 请求,应用程序必须做一些事情。然后我向这个应用程序发送 GET 请求并获取数据。我正在检查任务是否完成。如果没有,我需要再发送一次这个 GET 请求,例如。每 10 秒。如果分析完成,那么我应该停止轮询。我试过使用调度程序,但检查条件有问题。 Runnable 对象不能 return 任何值,所以我无法在适当的时候取消任务。第二件事是我可以同时有多个任务来轮询。您知道如何解决我的问题吗?
我在考虑两个选项:
- 每次发送 POST 时,将请求的详细信息保存在 table 中。使用 @Scheduled 注释,在 x 秒后,您可以查询 table 并为所有尚未处理的请求调用 GET api。处理请求后,您可以在 table 中更新状态,这样下次就不会再提取它了。
- 每次发送 POST 请求后,使用 ThreadPoolExecutor 添加一个将轮询 GET api 的线程。
编辑:现在有了完整的图片,我认为你应该保留两个选项的请求详细信息,因为如果出现问题,你需要将详细信息保存在某个地方以备将来重试。
我必须使用 Java 和 SpringBoot 构建一个服务,它将负责通过 API 轮询应用程序直到满足条件。所以我发送 POST 请求,应用程序必须做一些事情。然后我向这个应用程序发送 GET 请求并获取数据。我正在检查任务是否完成。如果没有,我需要再发送一次这个 GET 请求,例如。每 10 秒。如果分析完成,那么我应该停止轮询。我试过使用调度程序,但检查条件有问题。 Runnable 对象不能 return 任何值,所以我无法在适当的时候取消任务。第二件事是我可以同时有多个任务来轮询。您知道如何解决我的问题吗?
我在考虑两个选项:
- 每次发送 POST 时,将请求的详细信息保存在 table 中。使用 @Scheduled 注释,在 x 秒后,您可以查询 table 并为所有尚未处理的请求调用 GET api。处理请求后,您可以在 table 中更新状态,这样下次就不会再提取它了。
- 每次发送 POST 请求后,使用 ThreadPoolExecutor 添加一个将轮询 GET api 的线程。 编辑:现在有了完整的图片,我认为你应该保留两个选项的请求详细信息,因为如果出现问题,你需要将详细信息保存在某个地方以备将来重试。