cadence go-клиент / клиент для доступа к серверу для получения результатов рабочего процесса в панике

#cadence-workflow #uber-cadence

#cadence-рабочий процесс #uber-cadence

Вопрос:

Первый пользователь Cadence:

Сценарий У меня есть сервер cadence, работающий в моей среде изолированной среды. Цель состоит в том, чтобы получить статус рабочего процесса

Я пытаюсь использовать этот клиент cadence

go.uber.org/cadence/client

на моем локальном хосте для связи с моим сервером sandbox cadence.

Это мой простой фрагмент кода:

 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 / чтобы найти правильное использование, но не смог найти ни одной ссылки (возможно, я ее пропустил).

Любая помощь в том, как решить / реализовать это, будет очень полезна

Комментарии:

1. Можете ли вы распечатать трассировку стека паники? Интересно, правильно ли инициализирован cadClient.

Ответ №1:

Я не уверен, какая у вас паника. Судя по фрагменту кода, вероятно, вы не инициализировали клиент.

Чтобы инициализировать его, следуйте приведенному здесь образцу кода: 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))