Spring Boot或Spring

时间:2019-02-05 19:25:06

标签: java spring-boot error-handling custom-error-handling

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

  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集成的工作流程库,业务流程模式和/或框架

谢谢

2 个答案:

答案 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模块一样,使用相同的约定!

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

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