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