我正在努力工作几天才能完成这项工作.我想要完成的是从主流中调用不同的子流(即Integration流),基于消息内容和子流完成后返回主流.它就像委托对特定类的责任来完成某些事情并返回主流程.这个责任也需要一些步骤,所以它也作为流程实现.这是我的主要流程:
public IntegrationFlow processingFlow(
MessageChannel eventIn,
MessageChannel eventOut,
ChangedEventsLoader changedEventsLoader,
CalculatorRouter calculatorRouter) {
return IntegrationFlows.from(eventIn)
.handle(changedEventsLoader)
.route(
CalculatorRouter::getSportId,
CalculatorRouter::routeCalculation)
.channel(eventOut)
.get();
Run Code Online (Sandbox Code Playgroud)
}
这是路由器的实现:
@Service
@AllArgsConstructor
public class CalculatorRouter {
private final MessageChannel eventOut;
public RouterSpec<Integer, MethodInvokingRouter> routeCalculation(
RouterSpec<Integer, MethodInvokingRouter> mapping) {
return mapping
.channelMapping(1, "subflowCalculationChannel")
.defaultOutputToParentFlow();
}
public Integer getSportId(Event event) {
return 1;
}
@Bean
public MessageChannel subflowCalculationChannel() {
return MessageChannels.direct().get();
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个子流程的示例:
@Configuration
@AllArgsConstructor
public class CalculatorExample {
@Bean
public IntegrationFlow calculateProbabilities(MessageChannel subflowCalculationChannel) {
return IntegrationFlows.from(subflowCalculationChannel)
.<Event>handle((p, …
Run Code Online (Sandbox Code Playgroud)