可视化我的流程(使用this这个伟大的项目,顺便说一句)后,我注意到bridge
组件(连同DirectChannel
一起)插入了{{ 1}}:
我的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)))
)的开头明确指定通道,则不会创建桥:
但是我想自己指定通道,只是想知道它们的确切名称,或者例如使用typeXMappingChannel
之外的其他实现。
这是什么原因?还是我的配置出错了?
答案 0 :(得分:1)
这是如何构造流程的产物。
当我们调用.subflowMapping()
时,我们开始构建以通道开头的流。由于在您的情况下,.channel()
尚未遇到流程的第一个元素,因此我们构建了一个默认的输入通道。
然后,当我们遇到.channel()
时,我们看到前一个组件是一个通道,因此我们将其桥接。
我们可以针对特定情况对其进行优化;我来看一下,但如果执行此操作,则可能会更改5.2。