【问题标题】:How to store current cursor position within a cadence workflow activity如何在节奏工作流活动中存储当前光标位置
【发布时间】:2019-12-31 15:18:53
【问题描述】:

在节奏工作流活动中,在迭代多个实体时存储当前光标位置的最佳做法是什么?这将允许工作流在发生故障时从最后一个光标处开始。

存储当前光标的正确方法是什么? 我们是否应该定期continue as new 使用当前光标?

func createReports(ctx context.Context, arg1 string, arg2 int) error {
    cursor := ""
    for {
        result, err := someService.GetContracts(ctx, nil, cursor, 100)
        if err != nil {
            return err
        }

        for _, c := range result.Contracts {
            err := aChildWorkflow.StartPipeline(ctx, arg1, arg2)
            if err != nil {
                return err
            }
        }
        if !result.HasMore {
            break
        }
        cursor = result.NextCursor
    }
    return nil
}

【问题讨论】:

    标签: cadence-workflow


    【解决方案1】:

    回答我的问题后发现,我正在寻找的东西已经由 cadence go 客户端以心跳功能的形式提供:

    • GetHeartbeatDetails:从上次失败的尝试中提取心跳详细信息。这与重试策略结合使用。
    • RecordHeartbeat:发送当前执行活动的心跳
    func createReports(ctx context.Context, arg1 string, arg2 int) error {
        cursor := ""
        if activity.HasHeartbeatDetails(ctx) {
            err := activity.GetHeartbeatDetails(ctx, &cursor)
            if err != nil {
                return err
            }
        }
    
        for {
            result, err := someService.GetContracts(ctx, nil, cursor, 100)
            if err != nil {
                return err
            }
    
            for _, c := range result.Contracts {
                err := aChildWorkflow.StartPipeline(ctx, arg1, arg2)
                if err != nil {
                    return err
                }
            }
            if !result.HasMore {
                break
            }
            cursor = result.NextCursor
            activity.RecordHeartbeat(ctx, cursor)
        }
        return nil
    }
    

    【讨论】:

    • 很高兴你发现了这一点。我认为混淆来自问题中的“重新启动工作流程”短语。
    • 您会编辑原始问题以删除“有两个可能的错误可以重新启动工作流程”短语吗?问题是关于活动重新启动的,但从这句话看来,您正在谈论工作流程重新启动。
    猜你喜欢
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多