You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Apache Camel集成Telegram组件遇Unsupported endpoint type错误求助

解决Apache Camel Telegram组件路由创建失败的问题

问题根源

你碰到的错误Unsupported endpoint type for uri telegram://bots/123456789:AAAAAAAAAAAAAAA,本质是Telegram组件的URI格式用错了,导致Camel没法正确识别端点类型。

你当前把Bot令牌直接拼在bots后面的写法:

from("telegram:bots/123456789:AAAAAAAAAAAAAAAAAAA")
.to("telegram:bots/123456789:AAAAAAAAAAAAAAA");

Camel的URI解析逻辑会自动把telegram:bots/xxx转成telegram://bots/xxx(这是Camel统一的URI规范,scheme后面默认补//),但Telegram组件根本不支持把令牌放在路径里,它要求用查询参数来传递授权令牌。

正确写法

把路由URI改成Telegram组件要求的格式,用authorizationToken参数传递Bot令牌:

@Override
public void configure() {
    String botToken = "123456789:AAAAAAAAAAAAAAAAAAA";
    // 用fromF/toF格式化字符串,避免拼接错误
    fromF("telegram:bots?authorizationToken=%s", botToken)
        .bean(ChatBotLogic.class)
        .toF("telegram:bots?authorizationToken=%s", botToken);
}

额外建议

  1. 避免硬编码令牌:把Bot令牌放到配置文件(比如application.properties)里,用Camel的属性占位符引用更安全易维护:
    bot.auth.token=123456789:AAAAAAAAAAAAAAAAAAA
    
    路由中这样使用:
    from("telegram:bots?authorizationToken={{bot.auth.token}}")
        .bean(ChatBotLogic.class)
        .to("telegram:bots?authorizationToken={{bot.auth.token}}");
    
  2. 版本对齐检查:确保camel-telegram的版本和camel-corecamel-main完全一致,版本不兼容也可能导致组件加载异常。

关于双斜杠的疑问

这是Camel的标准URI解析行为,当你写scheme:path时,Camel会自动规范化成scheme://path(符合URI的RFC标准)。但Telegram组件不支持在路径里传令牌,所以才会触发“不支持的端点类型”错误——核心还是URI格式不对,不是双斜杠本身的问题。

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

火山引擎 最新活动