首页 > 解决方案 > Java 和 Spring - 轮询 http 端点,直到服务器完成处理

问题描述

我正在努力寻找以恒定间隔(例如〜1秒)轮询服务器的正确方法。

流程如下

我们可以有多个线程,因为客户端应用程序可能会在短时间内收到多条消息 - 轮询应该立即开始

我不想重新发明轮子,也许有一个合适的工具可以与我可以使用的 java/spring 一起使用?

主要特点

我正在浏览各种库,如 Apache Camel 或 Spring Integration PollableChannel,但我觉得这些库都不能为我提供开箱即用的正确解决方案。

如果没有这样的库 - 我将使用 redis 和简单循环自己编写它,但也许有人遇到过类似的问题。

标签: javaspringspring-bootspring-integrationpolling

解决方案


如果我正确理解您的架构,重点是从客户端应用程序调用相同的 HTTP 端点,直到获得预期结果。在这种情况下,我建议RequestHandlerRetryAdvice使用 anAlwaysRetryPolicy和 a FixedBackOffPolicy(默认为 1 秒)。

为了模拟异常,我建议ExpressionEvaluatingRequestHandlerAdvice使用选项从服务器的回复时propagateOnSuccessEvaluationFailures = true重新抛出异常是.onSuccessExpressionpending

这两个建议(确切地说RequestHandlerRetryAdviceExpressionEvaluatingRequestHandlerAdvice)你需要@ServiceActivator申请HttpRequestExecutingMessageHandler

在参考手册中查看更多信息:https ://docs.spring.io/spring-integration/reference/html/messaging-endpoints-chapter.html#message-handler-advice-chain


推荐阅读