我有四个子流程,每个子流程都位于自己的应用程序中并打包在jar文件中
每个子流都构建为spring boot应用程序。
每个子流都有输入通道和输出通道。
我希望将主流程放在自己的spring-boot应用程序中,该应用程序将依次调用这4个子流程。
弹簧整合有可能吗?
如果不可能,最好的办法是什么?
我搜索了互联网并查看了How to handle subflows
https://github.com/spring-projects/spring-integration-flow和其他我能找到的但仍不确定如何继续的事情。
https://github.com/spring-projects/spring-integration-flow声明要使用我需要在xml中使用的子流
int-flow:flow id="subflow1"
如何将此子流1绑定到单独jar中打包的子流中。
那么如何在我的主流程中调用这个子流程,即Spring启动应用程序?
我是否将消息发送到每个子流的输入通道以启动子流或执行其他操作?
谢谢,大卫
子流程xml文件的示例。
我删除了文件的不相关部分以缩短它并放置...代替删除的信息
<int:channel id="createTwo"/>
<int:service-activator input-channel="createOne" output-channel="createTwo"
ref="automationUtilities" method="createTwo"/>
...
<int:service-activator input-channel="createFive"
ref="automationUtilities" method="createSix"/>
<bean id="automationUtilities" class="package.BeanName" />
<bean id="validator" class="package.anotherBeanName" />
<util:properties id="config" location="classpath:application.properties"/>
答案 0 :(得分:0)
如果您的所有应用程序都是Spring Boot,那么它们就是微服务,并且每个应用程序都存在于其onw JVM中。因此,仅拥有input
和output
频道是不够的。因为您无法将消息从一个JVM发送到另一个JVM。
由于它们都是Spring Boot,因此请考虑为它们添加一些REST功能。至少简单<int-http:inbound-gateway>
来接收来自外部世界的消息。并<int-http:outbound-gateway>
执行从一个应用程序到另一个应用程序的REST请求。
OTOH考虑使用Spring Cloud Stream项目,该项目完全适用于Messaging Microservices通信。它基于Binder
概念,目前是Kafka或RabbitMQ。