我开始使用 Spring Dataflow,发现自己遇到了一些我无法回答的问题,阅读了文档并进行了一些测试。欢迎任何澄清(如果您不能一次回答所有问题,请回答您可以回答的问题,如果需要,我会合并完整的答案)
Spring Dataflow 旨在编写应用程序工作流,例如: 的输出
app A
是 的输入app B
,等等。工作流程不需要是线性的,因为 的输出app A
可能是 和 的app B
输入app C
。那准确吗?流水线中的应用程序以“消息驱动”的方式进行通信,这一点写得很好。
App A
将消息发送到代理(例如 RabbitMQ 或 Kafka),并app B
从中使用消息。我们的流程中可以有多个不同的经纪人。但是消息传递是在应用程序之间发送信息的唯一方式吗?例如,是否可以通过 HTTP REST 请求进行app A
调用?app B
如果是这样,如何?由于应用程序依赖于异步消息传递(参见上面的问题),Dataflow 的附加值是什么?我的意思是,如果您配置
app A
为向foo
主题发送消息,并app B
使用来自同一主题的消息,您可以分别部署两者(没有数据流),它会工作。据我了解,Dataflow 只提供了一种一次性部署和取消部署它们的方法,而不是一个接一个。那是对的吗 ?与上一个问题一样,异步消息传递将您从定义流顺序中抽象出来(即您可以
app B
在之前开始app A
)。整个系统只有在两个应用程序都启动时才能工作,但它们甚至不需要相互了解。唯一需要的是他们使用相同的代理和主题,一个发送消息,另一个获取消息。那么,为什么您绝对需要在 Spring Cloud Dataflow 中将一个应用程序的输出链接到另一个应用程序的输入?这是一种强制两个应用程序使用相同主题的方法,但仅此而已吗?