我正在设计要求如下的设计
例如,假设有一个Java方法,其中有多个外部组件调用,例如1个soap调用和2个rest调用,即
String doOrchestration(InputObject obj){
Line 1: Object obj = soap call[ input is XML format];
Line 2: Object obj1 = rest1 call [the input is obj in JSON format]
Line 3: Object obj3 = rest2 call[the input is obj1 in JOSN format]
//do something
return str
}
错误发生在第2行。我们需要捕获/保持状态,并在以后继续从第2行执行。
有没有可以与spring / Spring-boot集成的工作流程库,业务流程模式和/或框架
谢谢
答案 0 :(得分:0)
好吧,我用来处理此类问题的技术是apache骆驼,您可以设置骆驼,例如在您的要求中,您可以构建主要的路线,这些人将协调其他路线(例如端点),如果一个端点有一个例外,您可以呼叫保留该路由的路由,然后再次呼叫该端点的路由,或类似的东西。
http://camel.apache.org/getting-started.html
编辑:骆驼具有许多潜在的转换消息,例如json,xml,对象。
如果要检查它,我在github上有一个非常简单的项目,它带有spring boot和camel。
https://github.com/chill-hub/spring_boot_camel_base_archetype
答案 1 :(得分:0)
像这样的Apache Camel版本spring是spring-integration https://spring.io/projects/spring-integration
Apache Camel和Spring Integration实现了称为EIP的企业集成模式。请先查看https://www.enterpriseintegrationpatterns.com/。 它基本上是工作流程和业务流程的设计模式!
您有一个名为spring-boot-starter-integration的与spring boot集成的启动器。
您可能应该查看https://github.com/spring-projects/spring-integration-java-dsl/wiki/spring-integration-java-dsl-reference上的Java Spring Config dsl参考。 使用更现代的方法(xml和注释开始消失)向您展示一个很好的概述。
您可能需要做的https://docs.spring.io/spring-integration/reference/html/ws.html是Spring集成的Web扩展。
请注意,这是一个非常优雅的解决方案,但具有很多抽象性,一开始可能会很困难。请记住,EIP定义了构建模块和用于构建工作流的词汇,Apache Camel和Spring Integration是实现这些构建模块并提供线程模型抽象(也包括队列持久性抽象)的框架,并且两者都有一些扩展,可以轻松地将这些构建模块适应于真实词(网络,ldap,数据库等)
这两个框架都有优点和缺点,但是您可能更喜欢在Spring生态系统团队中进行Spring集成,而与其他Spring模块一样,使用相同的约定!
同样,这些框架确实很优雅,但是抽象总是要付出代价的! p>
免责声明:我是春季集成课程的培训师-官方