我有一个用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中提供的示例,但是功能路由器没有提供访问标题...