动态实例化Spring Integration流程

时间:2016-07-21 00:46:28

标签: spring-integration

我有一个暴露Rest网关的Spring Integration Flow Project,在收到Rest POST请求后,它会做一些次要逻辑。根据一些Payload参数,我想动态激活另一个Spring Integration流,并将消息路由到该流中的指定通道,我可以根据Payload在主流中发现该通道。 Sub流程将响应消息放入主流中定义的指定通道中。

我怎样才能做到这一点。

2 个答案:

答案 0 :(得分:2)

从版本1.2开始Spring Integration Java DSL为运行时流registration提供API:

@Autowired
private IntegrationFlowContext context;
...

IntegrationFlow myFlow = f -> f
            .<String, String>transform(String::toUpperCase)
            .transform("Hello, "::concat);

String flowId = this.context.register(myFlow);
MessagingTemplate messagingTemplate = this.context.messagingTemplateFor(flowId);

assertEquals("Hello, SPRING",
            messagingTemplate.convertSendAndReceive("spring", String.class));

this.context.remove(flowId);

因此,根据您的逻辑,您可以构建并执行一个或另一个流程。

围绕该API,您甚至可以构建一些缓存,不要多次注册相同的流,但只需在首次注册后重复使用。

答案 1 :(得分:0)

请参阅使用自定义路由器的dynamic ftp example来实例化子流并路由到新流的频道。

另请参阅my answer to this question及其follow up了解类似的机制,这次使用java配置进行入站邮件适配器。