如何使用 Spring Cloud Data Flow 处理同步响应

How to handle synchronous responses with Spring Cloud Data Flow

我们正在设计将整体式 Java 应用程序迁移到微服务以满足各种客户需求,例如可扩展性、高可用性等。我们应用程序的核心功能是数据处理,即从源中检索数据,对其进行 0 次或多次转换,最后将结果推送到目的地。出于这个原因,我们正在寻找 Spring Kubernetes 和 Kafka 上的云数据流 运行 来为我们完成繁重的工作,并使用一些自定义构建的流应用程序来处理我们的业务逻辑。

我们还没有弄清楚的一件事是它如何处理对通过 HTTP 源发送的请求的同步响应 - 特别是在响应之前需要进行一些处理时。例如,假设收到一个请求,在 JSON 数据包中包含两个不同的金额。然后我们将其传递给一个自定义的“加法”转换器,该转换器输出这些金额的总和,并且需要 return 将结果返回给调用方。但是,由于转换器是一个完全独立的进程,它通过使用来自 Kafka 主题的数据来接收数据,因此它无法访问原始 HTTP 连接来响应。

这是否可以通过 Spring 云数据流实现,也许可以通过将其与 Spring 云网关之类的东西结合起来来管理 HTTP 连接?还是我们完全找错了树?

将异步流(Spring 云数据流)与同步 HTTP 流结合起来并不容易(HTTP 请求有超时,异步流处理时间事先未知)。你可以做的是 return 一个 id 作为你的 HTTP 源的响应,并有另一个 HTTP 端点来检查初始请求的状态并使用它取回结果。这是一种轮询方法。