当前位置: 首页 > 知识库问答 >
问题:

Cadence分别注册工作流程和活动

归鹤龄
2023-03-14

我有一个由多台机器组成的网络,我正在使用cadence go客户端。

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前端服务在另一台机器上。

如何使用 go 客户端执行此操作?此外,收银机是否仅将工作流/活动保存在内存中?我怎样才能把它们推到节奏服务,以便其他机器也能找到它们。

共有1个答案

宋耀
2023-03-14

目前,注册纯属特定员工本地注册。我们计划将来添加某种元数据服务,其中包含活动和工作流类型的目录。

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

若要禁用计算机 2 上的活动工作线程,请指定“工作线程选项”

不需要在机器上注册任何东西3.

 类似资料:
  • 将是什么 线程不足,无法执行工作流。如果此消息始终显示,请选择WorkerOptions。应减小maxConcurrentWorklfowExecutionSize或WorkerOptions。maxWorkflowThreads增加。 处于阻塞状态的工作流在内存中保持活动状态??处于等待状态的工作流是否持续检查条件??更多的 -

  • 为用户可视化节奏工作流的最佳方式是什么? 我想在一个高层次的视图中向用户展示工作流的不同步骤(类似于大多数食品配送应用程序的功能:下单- 我对向用户展示实际执行的节奏活动不感兴趣,因为我不希望他们看到我的工作流程的详细信息,我只想可视化他们感兴趣的某种高级阶段。 一种方法是保留工作流的高级描述,并在工作流代码本身内部进行状态转换(在启动活动 X 时将阶段 Y 标记为已启动等)。但是,我试图将这个问

  • 在执行任务时,如果出现故障,希望定义配置以在一定间隔后重试并从失败的任务中恢复。是否可以实现恢复选项?

  • 对于长时间运行的活动,我们可以使用心跳来通知活动是正在运行还是已死。 我们有一个工作流,该工作流调用多个子工作流,其中包含一些基于父工作流生成的分组的参数。子工作流是长时间运行的工作流。 有没有办法让类似的检测信号从子工作流发送,因为这些工作流长时间运行,超时设置为几个小时?或者更确切地说,通知子工作流正在运行的方法是什么? 我们正在使用go-client来实现工作流程。

  • 我正在评估使用Cadence来执行长时间运行的批量操作。我有以下代码: 这对于数量较少的实体很好,但我很快遇到了以下异常: 看起来我很快就耗尽了线程池,Cadence无法安排新任务。 我通过将的定义更改为: 这基本上是以200个块为单位处理项目,并等待每个块完成,然后再移动到下一个块。我担心这将执行得如何(在重试时,块中的单个错误将停止处理以下块中的所有记录)。我还担心Cadence在发生崩溃时能

  • 在Cadence/Temoral工作流编程中: < li >不允许使用本机线程库。例如,在Java中,线程必须通过< code>Async.procedure或< code>Async.function创建,而在Golang中,线程必须通过< code>workflow创建。去吧。那为什么呢? < li >有没有类似使用本机线程的竞争条件?例如,为了线程安全,应该使用< code>Hashtabl