如果有条件,Spring Integration DSL将执行SubFlow,在两种情况下均以父级

时间:2018-10-23 20:27:27

标签: spring spring-integration-dsl

我有一个用DSL描述的Spirng集成流程,如果某个表达式为true,我希望执行一个子流程,但是不管它的值是多少,我都希望流程从父级的下一步继续进行。

如下所示:

return IntegrationFlows.from(Mail.imapInboundAdapter(mailReceiver),
     e -> e.id("mailListener").poller(Pollers.fixedRate(rate * 1000)))
.log("new message")
.enrichHeaders(headers -> headers.headerExpression("outgoing", false))
.filter("headers[outgoing]", fs -> fs.discardFlow(df -> df.log("incoming"))
.log("final step")
.transform(mailHelper, "create")
.handle(mailer())
.get();

我要实现的目的是无论final step标头中包含什么值,都要打印outgoing日志,或者换句话说,是将丢弃流返回给父对象执行后流。

我知道过滤器可能不是正确的方法,但我似乎也无法使用路由器来实现它...

我尝试通过以下方式来增强过滤器:

.route("headers[outgoing]", r -> r
        .subFlowMapping("true", f -> f.log("outgoing"))
        .subFlowMapping("false", f -> f.log("incoming")))
.log("final step")

但是显然路由器似乎没有outputChannel,可能是因为它是一个表达式评估路由器...我试图改编spring documentation中提供的示例,但是功能路由器没有提供访问标题...

0 个答案:

没有答案