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

无法找到外部自定义模块中的Camel路由,direct端点无可用消费者

解决Apache Camel中direct://event-persist无可用消费者的问题

针对你遇到的Camel路由调用direct://event-persist时报错No consumers available on endpoint: direct://event-persist的问题,以下是几个核心排查和解决方向:

1. 修正Direct端点的URI格式

Apache Camel的Direct组件标准URI格式是direct:端点名称,而非direct://端点名称(后者是HTTP类组件的格式)。如果同事的外部模块中定义的消费者是direct:event-persist,而你这边用了direct://event-persist,两者会被识别为完全不同的端点,自然找不到消费者。

修正你的路由代码:

from("direct://user-logged")
        .routeId("user-event-tracker")
        .tracing()
        .log(String.valueOf(PAYLOAD))
        .process(new TriggerUserActionProcessor())
        .process(new AuditUserAction(USER_ACTION, PAYLOAD))
        .to("direct:event-persist")  // 去掉多余的斜杠,匹配标准格式
        .end();

2. 确认外部模块的消费者路由已正确加载

  • 检查同事的user-event-persist模块中,是否存在以from("direct:event-persist")开头的路由定义,且该路由已被注册到Camel上下文。
  • 如果是Spring环境,确保路由类带有@Component注解;如果是纯Java配置,需通过CamelContext.addRoutes()手动将路由添加到上下文。

3. 排查Camel上下文的初始化顺序

如果你的SPI模块路由先启动,而外部模块的event-persist路由后完成初始化,就会出现调用时消费者未就绪的情况:

  • Spring环境下可使用@DependsOn注解指定你的路由类依赖外部模块的路由组件,确保加载顺序。
  • 手动管理CamelContext时,先启动外部模块对应的上下文,再启动你的SPI路由上下文。

4. 验证依赖与类加载正确性

  • 执行mvn dependency:tree命令,确认user-event-persist依赖已正确引入到你的项目中,scope为compile而非provided或test。
  • 由于是Keycloak SPI模块,需确保外部模块的类能被Keycloak的类加载器扫描到:要么将外部模块打包到你的SPI fat jar中(用maven-shade-plugin),要么将user-event-persist.jar放置到Keycloak的providers目录下。

内容的提问来源于stack exchange,提问作者CIN SOFT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:48:22