带有云原生 Dapr 作业的循环工作流

主要观点:

  • 已学习不少关于 Dapr 的知识,之前有关于Dapr WorkflowsDapr Conversation AI组件的文章,今日讨论 Dapr 生态系统的另一个重要组件 Jobs。
  • 很多时候需要按计划运行工作流,如定期文件备份、执行维护任务等,Dapr Jobs 可提供帮助。

关键信息:

  • 架构方面:MyApp 是用于调度和注册作业的 Java 应用,创建 cron 作业时需注册回调端点,端点应为 POST 请求,URL 模式类似/jobs/{jobName}
  • 具体步骤:

    • 下载并安装 Dapr CLI,可使用 PowerShell 命令powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex",安装后用dapr -h验证。
    • 创建 Maven 项目,添加 Dapr 依赖io.dapr:dapr-sdk和 Spring Boot 依赖org.springframework.boot:spring-boot-starter-web
    • 编写 App 逻辑来注册作业,使用DaprPreviewClient创建ScheduleJobRequest并调用scheduleJob()方法,还可使用getJob()方法获取作业详情,deleteJob()方法删除作业。
    • 注册回调端点,使用 Spring Boot 控制器JobsController处理作业回调,定义@PostMapping("/job/{jobName})方法。
    • 编写 Spring Boot 应用的启动文件。
    • 运行应用,使用dapr run命令启动,指定相关参数,如--app-id myapp --app-port 8080 --dapr-http-port 3500 --dapr-grpc-port 51439 --log-level debug,然后运行DemoJobsClient

重要细节:

  • 之前文章使用.NET SDK,此次使用 java-sdk。
  • 在注册作业时,ScheduleJobRequest构造函数需传入作业名称和 cron 表达式(此例为每 10 秒运行一次)。
  • 回调端点定义为/job/{jobName},当运行调度作业时,Dapr 运行时会调用该端点,示例中会打印作业名称和负载。
阅读 7
0 条评论