使用ksqldb-cli Docker镜像执行ksqlDB迁移时遇HTTP2错误求助
ksqlDB迁移apply操作报错:This endpoint is only available when using HTTP2(错误码40004)
问题描述
使用ksqlDB迁移工具的GitHub Action执行迁移时,仅apply操作报错,错误信息如下:
io.confluent.ksql.api.client.exception.KsqlClientException: Received 400 response from server: This endpoint is only available when using HTTP2. Error code: 40004.
ksqlDB Server和CLI版本均为0.28.2,初始化、验证、试运行(dry run)操作均可正常执行。
原因分析
这个错误并非ksqlDB 0.28.2的bug,核心原因是apply操作调用的ksqlDB API端点要求必须使用HTTP/2协议,而当前迁移工具的请求使用了HTTP/1.1协议,导致服务器拒绝请求。
其他操作(初始化、验证、试运行)能正常工作,是因为它们调用的是兼容HTTP/1.1的API端点,不需要强制HTTP/2。
解决方案
- 确认ksqlDB Server已启用HTTP/2
检查ksqlDB服务器配置文件,确保ksql.http2.enabled设置为true,同时配置ksql.http2.port(默认通常为8089,可根据实际情况调整),重启服务器使配置生效。 - 调整GitHub Action的目标端口
在迁移action的配置中,将ksqlDB的连接地址指向HTTP/2端口(比如http://your-ksqldb-server:8089),而非默认的HTTP/1.1端口(通常8088)。 - 确保迁移工具客户端启用HTTP/2
若使用ksqlDB Java客户端,需在创建KsqlClient实例时显式启用HTTP/2支持:
同时检查GitHub Action的代码实现,确认KsqlClient client = KsqlClient.create("http://your-ksqldb-server:8089", clientConfig -> { clientConfig.useHttp2(true); });apply步骤中是否正确配置了HTTP/2支持。 - 验证action版本兼容性
确认使用的ksqlDB迁移action版本与ksqlDB 0.28.2兼容,若action版本较旧,可能未适配最新版本的HTTP/2要求,尝试更新action到最新版本。
内容的提问来源于stack exchange,提问作者Farhan Islam
相关产品推荐
相关产品推荐

