Cloudflare Workflows
Service Bindingsの使い方まわり
裏はDOなのでこれは前提
https://zenn.dev/mizchi/articles/5130b02c5b490e4f871a
https://developers.cloudflare.com/workflows
とりあえずTemplateがあるっぽいので見る
https://developers.cloudflare.com/workflows/get-started/guide/
- 1Workerに対して複数Workflowを含められる(Classで識別)
ワークフロー内の各ステップ
- 独立して再試行可能(最大リトライ回数、遅延、バックオフアルゴリズム)
- ステップ間の順序関係を持たせられる
API
https://developers.cloudflare.com/workflows/build/workers-api/
別スクリプトからのWorkflowの呼び出し
https://developers.cloudflare.com/workflows/build/workers-api/#cross-script-calls
トリガーする方法
https://developers.cloudflare.com/workflows/build/trigger-workflows/#workers-api-bindings
fetch handlerから使用する方法
QueueのConsumer(Queue Handler)
Cron Trigeer(Schedule Handelr)
Durable Objectの中から
SleepとRetry
Sleepされたワークフローインスタンスで再開されたワークフローは新たにスケジュールされたインスタンスよりも優先される
相対時間でsleep
https://developers.cloudflare.com/workflows/build/sleeping-and-retrying/#sleep-for-a-relative-period
特定の日付までスリープさせる
https://developers.cloudflare.com/workflows/build/sleeping-and-retrying/#sleep-until-a-fixed-date
Retryはstep.doのConfigに含める
https://developers.cloudflare.com/workflows/build/sleeping-and-retrying/#retry-steps
強制的にWorkflowを終了させるNonRetryableError
https://developers.cloudflare.com/workflows/build/sleeping-and-retrying/#force-a-workflow-instance-to-fail
ワークフローはtry catchで例外を捕捉できる
捕捉しない場合は、Errored状態でワークフローを終了する
https://developers.cloudflare.com/workflows/build/sleeping-and-retrying/#catch-workflow-errors
Paramerterをワークフローを渡す(SON-serializable object)
https://developers.cloudflare.com/workflows/build/events-and-parameters/#pass-parameters-to-a-workflow
Local Develop
https://developers.cloudflare.com/workflows/build/local-development/
ステップの冪等性の担保
https://developers.cloudflare.com/workflows/build/rules-of-workflows/#ensure-apibinding-calls-are-idempotent
ステップは自己完結的であるべき
https://developers.cloudflare.com/workflows/build/rules-of-workflows/#make-your-steps-granular
決定論的にステップ名をつける
https://developers.cloudflare.com/workflows/build/rules-of-workflows/#name-steps-deterministically
WorkflowのインスタンスIDはユニークである
https://developers.cloudflare.com/workflows/build/rules-of-workflows/#instance-ids-are-unique
Service Bindingsから呼び出す(pages functinonの例)
https://developers.cloudflare.com/workflows/build/call-workflows-from-pages/#use-service-bindings
https://developers.cloudflare.com/workflows/build/call-workflows-from-pages/#using-fetch
Price
Workers同様CPU時間とリクエスト数による課金
sleepの時はCPU時間を消費しない
Limit
https://developers.cloudflare.com/workflows/reference/limits/
用語
https://developers.cloudflare.com/workflows/reference/glossary/