apache骆驼多线程内路由

时间:2018-08-24 13:40:37

标签: java multithreading spring-camel

我有这些路线:

'.text.md'

其他服务端点:

    @Override
public void configure() throws Exception {
    String overviewRoute = this.routingProperties.getReportingRoute(OverviewtRouteConstants.OVERVIEW);

    this.from(overviewRoute).routeId(overviewRoute).threads(1, 100).choice()
            .when(this.simple(BODY_GRAPH_NAME + GraphConstants.OVERVIEW_OPEN_LANE + "'"))
            .to(this.routingProperties.getReportingRoute(OVERVIEW_OPENLANES_TO))
            .when(this.simple(BODY_GRAPH_NAME + GraphConstants.OVERVIEW_BELT_DOWNTIME + "'"))
            .to(this.routingProperties.getReportingRoute(OVERVIEW_BELTDOWNTIME_TO))
            .when(this.simple(BODY_GRAPH_NAME + GraphConstants.OVERVIEW_LUGGAGE_THROUGHPUT + "'"))
            .to(this.routingProperties.getReportingRoute(OVERVIEW_LUGGAGETHROUGHPUT_TO))
            .when(this.simple(BODY_GRAPH_NAME + GraphConstants.OVERVIEW_LANE_UTILIZATION + "'"))
            .to(this.routingProperties.getReportingRoute(OVERVIEW_LUGGAGETHROUGHPUT_TO))
            .when(this.simple(BODY_GRAPH_NAME + GraphConstants.OVERVIEW_LUGGAGE_SCANNED + "'"))
            .to(this.routingProperties.getReportingRoute(OVERVIEW_LUGGAGESCANNED_TO));
}

上下文: 从ws REST端点调用主路由 overviewRoute 。其他路由根据when子句调用。

我的前端并行调用主路由多次。

我看到的是: 在“ choice”子句中定义的所有路由都被顺序调用(下一条路由在前一条完成后被调用)。

我想要什么: 我希望Choice子句中定义的路由必须在ws被调用完成后立即调用,而不是在前一个调用完成后立即调用。

我尝试过的方法: Apache Seda Spring Scope:@Scope(BeanDefinition.SCOPE_PROTOTYPE)

1 个答案:

答案 0 :(得分:0)

听起来所有.when子句都返回True,所以它遵循所有选择。我不确定您的.when子句中的部分是否是实际的比较?我是否想念您如何进行比较以检查消息的一部分以在基于上下文的路由器中进行比较和路由?