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

如何从Cadence工作流或活动中发出自定义指标?

艾雪风
2023-03-14

Cadence使用tally发出一堆指标。可以使用Cadence SDK发出我自己的指标吗?

Go SDK有cadence.GetMetricsScope()。计数器(计数器名)。公司(),但当我刚刚调用它时,它似乎不起作用。我是否缺少一些必需的配置?

共有1个答案

邵羽
2023-03-14

您可以使用Go和Java SDK添加自己的指标。下面的例子展示了如何使用Go SDK来实现这一点,而Java SDK与之没有太大区别。

在工作流代码中:

cadence.GetMetricsScope().Counter(counterName).Inc(1)

在活动代码中:

cadence.GetActivityMetricsScope().Counter(counterName).Inc(1)

但是,仅这样做并不足以实际发出指标。原因是计数使用计数。默认情况下,NoopScope,顾名思义,它不执行任何操作。因此,您还需要将指标范围设置为辅助角色选项的一部分,如以下示例所示:

workerOptions := cadence.WorkerOptions{
 MetricsScope: myTallyScope, 
}
worker := cadence.NewWorker(service, domain, taskList, workerOptions)

您可以按照Go和Java的tally文档中的示例创建< code>myTallyScope。

 类似资料:
  • 我计划将 Cadence 或临时工作流用于架构,但我们计划在决定工作流时为用户提供很大的权力。在他们的用例中,节奏和时间都提到他们的SDK支持自定义DSL,但我看不到该功能。你能帮帮我吗?

  • 在节奏工作流活动中,在迭代多个实体时存储当前光标位置的最佳做法是什么?这将允许工作流在发生故障时从最后一个光标开始。 存储当前光标的正确方法是什么?我们是否应该定期使用当前光标作为新光标继续?

  • 我有一个由多台机器组成的网络,我正在使用cadence go客户端。 1号机需要登记活动 机器2需要注册工作流程。 机器3需要启动以启动工作流。 cadence前端服务在另一台机器上。 如何使用 go 客户端执行此操作?此外,收银机是否仅将工作流/活动保存在内存中?我怎样才能把它们推到节奏服务,以便其他机器也能找到它们。

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

  • 我偶然创建了一个错误的域名,或者经过一些测试后,我想删除该域名。我应该那样做吗?又是怎么做到的?

  • 我正在探索Cadence,有一个关于故障恢复的问题。我知道工作流是容错的(工作流历史被维护),以防工作流工作人员失败。我找不到活动工作人员的相同保证。例如:假设一个活动对服务A进行了RPC调用,这改变了一些远程对象状态;现在,让我们假设调用成功了,但活动工作人员在通知Cadence服务之前丢失了。在这种情况下,Cadence会在一个新工作人员上再次安排活动吗? 我知道如果服务A是幂等的,上述可能不