You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Camel Java DSL 如何为路由定义动态添加处理器名称列表

动态添加处理器到Apache Camel路由的实现方案

完全可以实现,你不需要使用运行时的loop系列组件,只需在路由构建阶段遍历处理器名称列表,动态拼接流式路由定义即可。

修改后的代码示例如下:

protected void setupRoute(String routeKey, String nbiSystemName, String requestEndpointUrl,
        String defaultSbi, String reqSwitchRouteId, ArrayList<String> processorNames) {
    
    // 先把前面的路由定义存为RouteDefinition变量
    RouteDefinition route = from(requestEndpointUrl)
        .routeId(routeKey).transacted()
        .setProperty(PROPERTY_CBS_STARTTIME, simple("${date:now:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'}"))
        .setProperty(PROPERTY_CBS_NBI, constant(nbiSystemName))
        .setProperty(PROPERTY_CBS_SBI, constant(defaultSbi));

    // 遍历处理器名称列表,逐个添加process定义
    for (String processorName : processorNames) {
        route = route.process(processorName);
    }

    // 最后追加后续路由节点
    route.to("direct:" + reqSwitchRouteId );
}

方案说明

  • 这个循环执行在路由初始化构建阶段,而非路由运行阶段,最终生成的路由和你手动逐行写.process("处理器名")的效果完全一致,运行时会按照列表顺序依次执行处理器,没有额外的运行时开销。
  • 请确保所有传入的处理器名称都已经提前注册到Camel上下文中,否则路由启动时会抛出找不到对应Bean的异常。

内容的提问来源于stack exchange,提问作者Rainer Bonn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:57:01