Cadence 分别注册工作流和活动

Cadence register workflows and activities separately

我有一个多台机器的网络,我用的是cadence go client

机器 1 需要注册活动。

// Machine 1 registering activities
func sampleActivity(ctx context.Context) (string, error) {
    logger := activity.GetLogger(ctx)
    logger.Info("separate machines are handling this")
    return "Activity machine succeeded"
}
func main() {
     activity.RegisterWithOptions(sampleActivity, RegisterOptions{Name: "Machine1Activity"})
}

机器 2 需要注册工作流。

// Machine 2 registering workflows
func sample_workflow(ctx workflow.Context, name string) (string, error) {
     ...
     err := workflow.ExecuteActivity(ctx, "Machine1Activity")
     ...
}

func main() {
    workflow.RegisterWithOptions(sampleWorkflow, "Machine2Workflow")
}

机器 3 需要启动才能启动工作流。

// Machine 3 starting the workflow

// Prepare options and ctx

client.StartWorkflow(ctx, options, "Machine2Workflow", "Machine1Activity")

cadence-fronted 服务在另一台机器上。

我如何使用 go 客户端执行此操作?另外寄存器只保存内存中的 workflow/activity 吗?怎么推送到cadence服务,让其他机器也能找到。

目前,注册纯粹是特定工作进程的本地注册。我们计划在将来添加某种具有 activity 目录和工作流类型的元数据服务。

要在机器 1 上禁用工作流工作者,请指定 WorkerOptions.DisableWorkflowWorker

要在机器 2 上禁用 activity worker,请指定 WorkerOptions.DisableActivityWorker

无需在机器3上注册任何东西