Camel Kafka Connect Jira连接器报“找不到端点”错误求排查方案
环境配置
在Kubernetes上运行Strimzi集群,Kafka版本4.0,使用org.apache.camel.kafkaconnector.camel-jira-source-kafka-connector连接器(测试过4.0.3和4.0.0版本),当前KafkaConnector配置如下:
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnector metadata: name: jira-source-connector-test labels: strimzi.io/cluster: my-connect-cluster spec: class: org.apache.camel.kafkaconnector.CamelSourceConnector tasksMax: 1 config: camel.kamelet.log-sink.level: DEBUG file: "/opt/kafka/LICENSE" topic: jira-source-test connection.timeout.ms: "5000" read.timeout.ms: "5000" target.cluster.bootstrap.servers: my-cluster-kafka-bootstrap:9092 name: "JiraTest" camel.source.path.type: "newComments" camel.source.url: https://url camel.source.password: "password" camel.source.username: "username" camel.source.jql: "project=TASKTRACK" camel.source.contentLogLevel: "DEBUG" camel.sink.contentLogLevel: "DEBUG"
问题现象
尝试多种URL、用户名密码配置方式后,始终出现两类错误:
- 因URL配置参数错误导致的「找不到端点」异常
- 配置接近目标但仍触发的配置类错误
已尝试操作
- 在Kafka Connect配置中下载了连接器依赖jar包
- 测试过十余种配置参数组合
- 验证了castorm的HTTP连接器可正常连接Jira(配置如下),但该连接器已3年未更新,不适用于生产:
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnector metadata: name: http-source-connector-0 labels: strimzi.io/cluster: my-connect-cluster spec: class: com.github.castorm.kafka.connect.http.HttpSourceConnector tasksMax: 1 config: value.converter: org.apache.kafka.connect.storage.StringConverter key.converter: org.apache.kafka.connect.storage.StringConverter file: "/opt/kafka/LICENSE" kafka.topic: jira-source-test connection.timeout.ms: "5000" read.timeout.ms: "5000" name: "HttpConnector0" http.request.url: https://url/jira/rest/api/2/search?jql=project=B AND issue=B-123 http.auth.type: Basic http.auth.user: "username" http.auth.password: "password" http.response.list.pointer: "/issues"
排查思路
1. 修正连接器类与配置前缀混用问题
当前配置使用通用CamelSourceConnector类,而非Jira专用连接器类,导致无法正确识别Jira专属参数。正确的连接器类应为org.apache.camel.kafkaconnector.jira.CamelJiraSourceConnector。
同时需明确配置前缀规则:
- Jira组件级参数前缀为
camel.component.jira.(如camel.component.jira.jiraUrl、camel.component.jira.username) - 端点级参数前缀为
camel.source.endpoint.(如camel.source.endpoint.jql、camel.source.endpoint.maxResults) - 移除冗余配置:
file、target.cluster.bootstrap.servers等非Jira Source参数会干扰配置解析
2. 标准化Jira URL配置
HTTP连接器使用完整API路径,但Camel Jira组件仅需Jira根URL(如https://url/jira),组件会自动拼接REST API路径。若使用Jira Cloud,需替换密码为API Token。
示例修正后的核心配置:
spec: class: org.apache.camel.kafkaconnector.jira.CamelJiraSourceConnector config: topic: jira-source-test camel.component.jira.jiraUrl: "https://url/jira" camel.component.jira.username: "username" camel.component.jira.password: "password" # Jira Cloud替换为apiToken camel.source.endpoint.jql: "project=TASKTRACK" camel.source.endpoint.type: "newComments"
3. 开启详细日志定位具体异常
添加配置camel.component.jira.logLevel: DEBUG,或在Strimzi Connect部署的日志配置中,将org.apache.camel.component.jira包的日志级别设为DEBUG,获取参数解析、认证、API请求的详细错误栈。
4. 验证依赖完整性
进入Connect Pod执行ls /opt/kafka/plugins/,确认Camel Jira连接器的所有依赖(如Jira Java客户端jar)已存在。若缺失,需重新构建包含完整依赖的镜像,或通过Strimzi的build配置自动下载。
5. 对比HTTP请求差异
用K8s的tcpdump或Sidecar工具,对比Camel连接器与HTTP连接器的请求细节:
- 检查请求URL是否正确拼接
- 验证Basic Auth头的格式是否合规
- 确认SSL证书是否被Connect Pod的信任存储认可(自签证书需手动导入)
内容的提问来源于stack exchange,提问作者aireducs

