如何将 yaml 属性 传递给 Uber Cadence cronSchedule 注释

How to pass the yaml property to Uber Cadence cronSchedule annotation

我是 uber Cadence 的新手,正在尝试编写一个 cron 计划任务。 Cadence 提供了一个 cronSchedule 注释(在线查找示例),它采用 cron 表达式字符串来在特定时间触发该方法。但是,我希望根据我们在 yml 文件中设置的内容加载此 cron 表达式。有什么办法吗? 我目前只找到了这种@cronSchedule 注释方式来做到这一点。我还发现有一个可以设置 cronSchedule 的 WorkflowOption。但是,不知道如何使用它来触发该方法。下面是当前代码。

public interface CronTask {


    @WorkflowMethod(
            workflowId = CRON_WORKFLOW_ID,
            taskList = TASK_LIST,
            executionStartToCloseTimeoutSeconds = 30,
            workflowIdReusePolicy = WorkflowIdReusePolicy.TerminateIfRunning
    )
    @CronSchedule("*/1 * * * *") 
    void kickOff(String name);
}

如果没有办法做到这一点。有谁知道我们是否可以简单地将此 @CronSchedule 注释替换为 spring @Scheduled?注释 WorkflowMethod 是否仍会按预期工作?

Temporal 中,您可以通过 WorkflowOptions 完成:

    WorkflowOptions workflowOptions =
        WorkflowOptions.newBuilder()
            .setWorkflowId(WORKFLOW_ID)
            .setTaskQueue(TASK_QUEUE)
            .setCronSchedule("* * * * *")
            .setWorkflowExecutionTimeout(Duration.ofMinutes(3))
            .setWorkflowRunTimeout(Duration.ofMinutes(1))
            .build();

    // Create the workflow client stub. It is used to start our workflow execution.
    GreetingWorkflow workflow = client.newWorkflowStub(GreetingWorkflow.class, workflowOptions);

我相信Cadence也有类似的能力。