繁体   English   中英

Spring Boot或Spring中用于异常和错误处理场景的工作流机制

[英]Workflow mechanism for exception and error handling scenarios in Spring Boot or Spring

我正在设计要求如下的设计

  1. 该应用程序将使用Spring Boot构建
  2. 作为要求的一部分,我们将必须构建一些业务流程,最终将调用多个SOAP和REST服务,并执行聚合,转换等。
  3. 当编排过程中发生异常/错误时,我们需要捕获并保持状态,然后从发生错误的同一点重试。

例如,假设有一个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集成的工作流程库,业务流程模式和/或框架

谢谢,

好吧,我用来解决这类问题的技术是阿帕奇骆驼,您可以设置骆驼,例如,在您的需求中,您可以构建主要的路线,该路线将编排其他路线,例如您的端点,如果一个端点具有您可以呼叫将保留该路由的路由,然后再次呼叫端点的路由,或者类似的例外。

http://camel.apache.org/getting-started.html

编辑:骆驼有很多潜在的转换消息,例如json,xml,对象。

如果您要检查它,我在github上有一个非常简单的项目,它带有spring boot和camel。

https://github.com/chill-hub/spring_boot_camel_base_archetype

Apache Camel版本的spring就像是https://spring.io/projects/spring-integration上的 spring-integration

Apache Camel和Spring Integration实现了称为EIP的企业集成模式。 请先查看https://www.enterpriseintegrationpatterns.com/ 它基本上是工作流程和业务流程的设计模式!

您有一个名为spring-boot-starter-integration的与spring boot集成的spring引导程序。

您可能应该在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模块一样,使用相同的约定!

同样,这些框架确实非常优雅,但是抽象总是要付出代价的!

免责声明:我是春季整合课程的培训师-官方

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM