在路由器之后自动添加网桥组件的目的是什么?

时间:2019-04-09 11:23:24

标签: java spring spring-integration

可视化我的流程(使用this这个伟大的项目,顺便说一句)后,我注意到bridge组件(连同DirectChannel一起)插入了{{ 1}}:

flow visualization

我的DSL配置:

router

(某些名称与流程上的名称有所不同,只是为了简化)

我注意到,如果我没有在映射子流(即.route(Message.class, messageTypeHeader(), mapping -> mapping .id("filteringRouterEndpoint") .resolutionRequired(false) .defaultSubFlowMapping(rejectedByFiltersFlow) .subFlowMapping(MessageType.TYPE_1, s -> s .channel("type1MappingChannel") .filter(type1MappingFilter) .channel(ACCEPTED_BY_FILTERS_CHANNEL_NAME)) .subFlowMapping(MessageType.TYPE_2, s -> s .channel("type2MappingChannel") .filter(type2MappingFilter) .channel(ACCEPTED_BY_FILTERS_CHANNEL_NAME)) .subFlowMapping(MessageType.TYPE_3, s -> s .channel("type3MappingChannel") .filter(type3MappingFilter) .channel(ACCEPTED_BY_FILTERS_CHANNEL_NAME))) )的开头明确指定通道,则不会创建桥: flow visualization 2

但是我想自己指定通道,只是想知道它们的确切名称,或者例如使用typeXMappingChannel之外的其他实现。

这是什么原因?还是我的配置出错了?

1 个答案:

答案 0 :(得分:1)

这是如何构造流程的产物。

当我们调用.subflowMapping()时,我们开始构建以通道开头的流。由于在您的情况下,.channel()尚未遇到流程的第一个元素,因此我们构建了一个默认的输入通道。

然后,当我们遇到.channel()时,我们看到前一个组件是一个通道,因此我们将其桥接。

我们可以针对特定情况对其进行优化;我来看一下,但如果执行此操作,则可能会更改5.2。

GH-2890