切换至Camunda Cloud Zeebe Go客户端库1.0.1后创建流程实例报rpc error: code=Unimplemented的问题及解决
Zeebe Go客户端升级到1.0.1后调用CreateProcessInstance报Unimplemented错误
问题场景
我之前用Go 1.16版本开发了一个和Zeebe交互的小程序,通过github.com/zeebe-io/zeebe/clients/go库连接Zeebe Broker,初始化客户端和创建流程实例的代码如下:
import ( "context" "os" "time" zbc "github.com/zeebe-io/zeebe/clients/go" ) // ... 其他业务代码 BrokerAddr := os.Getenv("ZEEBE_BROKER_ADDRESS") zbClient, err := zbc.NewClient(&zbc.ClientConfig{ GatewayAddress: BrokerAddr, UsePlaintextConnection: true, KeepAlive: 1 * time.Second, }) if err != nil { panic(err) } request, err := zbClient.NewCreateInstanceCommand().BPMNProcessId(triggerDataConfig.ProcessID).LatestVersion().VariablesFromObject(variables) if err != nil { panic(err) } else { result, err := request.Send(context.Background()) // 后续结果处理逻辑 }
之后我把客户端库升级到了1.0.1版本,仓库地址改为github.com/camunda-cloud/zeebe/clients/go,但此时调用request.Send(context.Background())创建流程实例时,出现了如下错误:
rpc error: code = Unimplemented desc = Method not found: gateway_protocol.Gateway/CreateProcessInstance
原因分析
这个错误的核心是Zeebe客户端与Broker版本不兼容。Zeebe在版本迭代中会对RPC接口做调整,1.0.1版本的客户端使用的CreateProcessInstance RPC方法路径/签名,和你当前运行的旧版本Broker不匹配——旧Broker并没有实现这个新版本客户端调用的接口。
解决方案
正确的解决办法是将你的Zeebe Broker也升级到1.0.1版本,确保客户端与Broker的版本完全一致。Zeebe的组件严格遵循版本兼容规则,只有同版本的客户端和Broker才能保证所有RPC接口正常通信。
内容的提问来源于stack exchange,提问作者NiBE
相关产品推荐
相关产品推荐

