【问题标题】:Spring Integration: Mapping - a default branchSpring Integration:映射 - 默认分支
【发布时间】:2021-06-23 10:12:00
【问题描述】:

我有一个交易流程:

    @Bean
    public IntegrationFlow eventProcessingFlow() {
        return IntegrationFlows.from(
                Jms.messageDrivenChannelAdapter(mqConnectionFactory)

                        .destination("queue/transaction-event"))
                .split()
                .<AppEvent, String>route(event -> event.getType(),
                        mapping -> mapping
                                .subFlowMapping("ORDER", subflow -> ...)
                                .subFlowMapping("PERSON", subflow -> ...))
                                .???when_others"(subflow -> ...))
                )

                .handle(m -> System.out.println(m.getPayload()))
                .get();
    }

我处理不同类型的事件。每种类型的消息都以特殊方式处理。我必须期待我可能会面对未知或未知类型的事件。我需要以我无法识别的事件类型、由子流处理或完全忽略的方式配置映射。

有没有办法做到这一点?

【问题讨论】:

    标签: java spring spring-integration


    【解决方案1】:

    添加.defaultOutputChannel("unknown.input")并添加

    @Bean
    IntegrationFlow unknown() {
        return f -> f.handle(...);
    }
    

    mapping 可能不是变量名的最佳选择,router 之类的名称可能更好。

    @Bean
    IntegrationFlow flow() {
        return f -> f.<String, String>route(p -> p, router -> router
                .subFlowMapping("foo", sf -> sf.log())
                .subFlowMapping("bar", sf -> sf.log())
                .defaultOutputChannel("unknown.input"));
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 2018-03-03
      相关资源
      最近更新 更多