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

创建Camel Salesforce Source Connector遇ResolveEndpointFailedException求助

Camel Salesforce Source Connector创建失败异常排查

背景

我是一名Python开发者,从未接触过Java。

环境

  • Camel Salesforce Source Connector:v3.20.6(也曾尝试v3.21.0和v4.0.0,均遇相同问题)
  • Kafka:v3.6.1

问题描述

尝试为Kafka实例创建CamelSalesforcesourceSourceConnector时失败,抛出ResolveEndpointFailedException异常。已通过Kafka REST API尝试多种配置变体:

配置变体1

{ 
  "name": "sf-source-connector", 
  "config": { 
    "tasks.max":"1", 
    "connector.class":"org.apache.camel.kafkaconnector.salesforcesource.CamelSalesforcesourceSourceConnector", 
    "key.converter":"org.apache.kafka.connect.storage.StringConverter", 
    "value.converter":"org.apache.kafka.connect.storage.StringConverter", 
    "camel.kamelet.salesforce-source.query": "SELECT * FROM Account", 
    "camel.kamelet.salesforce-source.topicName": "/data/AccountChangeEvent", 
    "camel.kamelet.salesforce-source.loginUrl": "https://login.salesforce.com/", 
    "camel.kamelet.salesforce-source.clientId": "", 
    "camel.kamelet.salesforce-source.clientSecret": "", 
    "camel.kamelet.salesforce-source.userName": "", 
    "camel.kamelet.salesforce-source.password": "", 
    "camel.kamelet.salesforce-source.notifyForOperationCreate": "true", 
    "camel.kamelet.salesforce-source.notifyForOperationUpdate": "true", 
    "camel.kamelet.salesforce-source.notifyForOperationDelete": "true", 
    "camel.kamelet.salesforce-source.notifyForOperationUndelete": "true", 
    "camel.source.endpoint.rawPayload": "true", 
    "camel.kamelet.salesforce-source.operation": "subscribe", 
    "topics": "camelsfstream" 
  } 
}

异常信息

  • 起始异常:org.apache.kafka.connect.errors.ConnectException: Failed to create and start Camel context
  • 最终根因:java.lang.IllegalArgumentException: /data/AccountChangeEvent
  • 关键问题:IllegalArgumentException: /data/AccountChangeEvent

配置变体2

将配置中的camel.kamelet.salesforce-source.topicName修改为subscribe:/data/AccountChangeEvent

异常信息

起始异常仍为Failed to create and start Camel context,最终异常变为:

存在1个无法设置到端点的参数,检查URI是否拼写正确及是否为端点属性,未知参数=[{operationName=subscribe}]

另外有疑问:端点以local-salesforce-1://开头,编号会递增,是否正常?未找到修改该属性的配置项,推测最终会被替换。已在GitHub提交相关issue。


解决方案与说明

  1. 参数冲突是核心问题
    变体1中同时配置了camel.kamelet.salesforce-source.query和operation: subscribe完全冲突:subscribe操作用于监听Salesforce Change Events,不需要设置query参数——query是给poll这类查询实体数据的操作使用的。同时设置会导致Camel无法正确解析端点,触发IllegalArgumentException。

  2. 修正后的配置示例
    删除query参数,保留subscribe相关配置:

{ 
  "name": "sf-source-connector", 
  "config": { 
    "tasks.max":"1", 
    "connector.class":"org.apache.camel.kafkaconnector.salesforcesource.CamelSalesforcesourceSourceConnector", 
    "key.converter":"org.apache.kafka.connect.storage.StringConverter", 
    "value.converter":"org.apache.kafka.connect.storage.StringConverter", 
    "camel.kamelet.salesforce-source.topicName": "/data/AccountChangeEvent", 
    "camel.kamelet.salesforce-source.loginUrl": "https://login.salesforce.com/", 
    "camel.kamelet.salesforce-source.clientId": "", 
    "camel.kamelet.salesforce-source.clientSecret": "", 
    "camel.kamelet.salesforce-source.userName": "", 
    "camel.kamelet.salesforce-source.password": "", 
    "camel.kamelet.salesforce-source.notifyForOperationCreate": "true", 
    "camel.kamelet.salesforce-source.notifyForOperationUpdate": "true", 
    "camel.kamelet.salesforce-source.notifyForOperationDelete": "true", 
    "camel.kamelet.salesforce-source.notifyForOperationUndelete": "true", 
    "camel.source.endpoint.rawPayload": "true", 
    "camel.kamelet.salesforce-source.operation": "subscribe", 
    "topics": "camelsfstream" 
  } 
}
  1. 变体2的错误原因
    手动在topicName前添加subscribe:属于画蛇添足:operation: subscribe已经明确指定了操作类型,Camel会自动构造对应的端点URI,手动添加前缀会导致框架解析出额外的未知参数,触发异常。

  2. 关于local-salesforce-1://前缀
    这是Camel内部生成的端点标识,编号递增是正常的框架行为,用于区分多个Salesforce连接实例,不需要手动修改,也不会影响实际与Salesforce的连接逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:25:27