如何自定义 spring 集成流程
How to customize spring integration flow
我有这样的要求
- 文件来自FTP
- 文件复制到本地目录
- 文件被拾取
- 要解析和读取的服务器 1
- 服务 2 丰富 XYZ
- 服务3充实CDY
- 服务 4 将数据保存在数据库中并获取生成的 ID 集(稍后需要)
- 服务5在服务4的基础上丰富另一条信息
- 服务 6 将向另一个系统发送消息
- 服务7将再次更新数据
- 服务 8 然后会做一些事情等等
- 将文件移回完成目录
此时我正在考虑 一个流程来处理 FTP 端 并获取文件并下载它。
流量#02
将选择文件并进行上述处理
我的问题是我是否应该在上述所有这些步骤中使用转换器。如果我有所有转换器的一个流程也可以吗?还是应该将其分解为子流程?
如果任何转换器抛出异常,它会忽略其余转换器并转到错误通道吗?
此外,如果我放置一个异常处理通道,我是否真的知道异常是在哪一步抛出的?
如果您不熟悉许多其他 Spring 集成组件,例如 Enricher
:https://docs.spring.io/spring-integration/reference/html/message-transformation.html#content-enricher and JPA channel adapters: https://docs.spring.io/spring-integration/reference/html/jpa.html#jpa
,您真的可以使用转换器做任何事情
即使您的应用程序有多个实例,您也确实可以在一个流程中完成所有工作。可以将流程配置为每一步都可以分布到整个集群以进行均匀计算。另一方面,我真的把我的流程分成几个逻辑单元。
如果一个步骤抛出异常,您确实不会再向下游传递该消息。这与常规 Java 程序的工作方式完全相同。
是的,从某个版本开始,我们将整个组件添加到异常消息中:
throw IntegrationUtils.wrapInHandlingExceptionIfNecessary(messageToUse,
() -> "error occurred in message handler [" + this + "]", e);
关注this
。它将使用 bean 名称和配置源调用 toString()
,以确定流程中发生错误的异常位置。
我有这样的要求
- 文件来自FTP
- 文件复制到本地目录
- 文件被拾取
- 要解析和读取的服务器 1
- 服务 2 丰富 XYZ
- 服务3充实CDY
- 服务 4 将数据保存在数据库中并获取生成的 ID 集(稍后需要)
- 服务5在服务4的基础上丰富另一条信息
- 服务 6 将向另一个系统发送消息
- 服务7将再次更新数据
- 服务 8 然后会做一些事情等等
- 将文件移回完成目录
此时我正在考虑 一个流程来处理 FTP 端 并获取文件并下载它。
流量#02 将选择文件并进行上述处理
我的问题是我是否应该在上述所有这些步骤中使用转换器。如果我有所有转换器的一个流程也可以吗?还是应该将其分解为子流程?
如果任何转换器抛出异常,它会忽略其余转换器并转到错误通道吗?
此外,如果我放置一个异常处理通道,我是否真的知道异常是在哪一步抛出的?
如果您不熟悉许多其他 Spring 集成组件,例如 Enricher
:https://docs.spring.io/spring-integration/reference/html/message-transformation.html#content-enricher and JPA channel adapters: https://docs.spring.io/spring-integration/reference/html/jpa.html#jpa
即使您的应用程序有多个实例,您也确实可以在一个流程中完成所有工作。可以将流程配置为每一步都可以分布到整个集群以进行均匀计算。另一方面,我真的把我的流程分成几个逻辑单元。
如果一个步骤抛出异常,您确实不会再向下游传递该消息。这与常规 Java 程序的工作方式完全相同。
是的,从某个版本开始,我们将整个组件添加到异常消息中:
throw IntegrationUtils.wrapInHandlingExceptionIfNecessary(messageToUse,
() -> "error occurred in message handler [" + this + "]", e);
关注this
。它将使用 bean 名称和配置源调用 toString()
,以确定流程中发生错误的异常位置。