小编Dra*_*vic的帖子

Spring集成路由到不同类的子流

我正在努力工作几天才能完成这项工作.我想要完成的是从主流中调用不同的子流(即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)

java spring-integration

5
推荐指数
1
解决办法
428
查看次数

标签 统计

java ×1

spring-integration ×1