0

首次使用Cadence:

场景 我的沙盒环境中有一个 cadence 服务器运行。意图是获取工作流状态

我正在尝试使用这个 cadence 客户端

go.uber.org/cadence/client

在我的本地主机上与我的沙盒节奏服务器交谈。

这是我的简单代码片段:

var cadClient client.Client

func main() {
wfID := "01ERMTDZHBYCH4GECHB3J692PC" << I got this from cadence-ui
ctx := context.Background()
wf := cadClientlient.GetWorkflow(ctx, wfID,"") <<< Panic hits here
log.Println("Workflow RunID: ",wf.GetID())
}

我肯定弄错了,因为客户端不知道如何访问 cadence 服务器。我参考了这个https://cadenceworkflow.io/docs/go-client/以找到正确的用法,但找不到任何参考(可能我可能错过了它)。

有关如何解决/实施此问题的任何帮助,都会有很大帮助

4

1 回答 1

0

我不确定你有什么恐慌。根据代码片段,您可能尚未初始化客户端。

要初始化它,请按照此处的示例代码:https ://github.com/uber-common/cadence-samples/blob/master/cmd/samples/common/sample_helper.go#L82

https://github.com/uber-common/cadence-samples/blob/aac75c7ca03ec0c184d0f668c8cd0ea13d3a7aa4/cmd/samples/common/factory.go#L113

    ch, err := tchannel.NewChannelTransport(
        tchannel.ServiceName(_cadenceClientName))
    if err != nil {
        b.Logger.Fatal("Failed to create transport channel", zap.Error(err))
    }

    b.Logger.Debug("Creating RPC dispatcher outbound",
        zap.String("ServiceName", _cadenceFrontendService),
        zap.String("HostPort", b.hostPort))

    b.dispatcher = yarpc.NewDispatcher(yarpc.Config{
        Name: _cadenceClientName,
        Outbounds: yarpc.Outbounds{
            _cadenceFrontendService: {Unary: ch.NewSingleOutbound(b.hostPort)},
        },
    })

    if b.dispatcher != nil {
        if err := b.dispatcher.Start(); err != nil {
            b.Logger.Fatal("Failed to create outbound transport channel: %v", zap.Error(err))
        

    client := workflowserviceclient.New(b.dispatcher.ClientConfig(_cadenceFrontendService))
于 2020-12-05T05:04:01.873 回答