Open9
TemporalをTypeScriptで試す
npx @temporalio/create@latest ./my-app
複数のSampleが用意されていて選べるようになっている
? Which sample would you like to use? › - Use arrow-keys. Return to submit.
↑ fetch-esm
food-delivery
grpc-calls
hello-world-js
hello-world-mtls
❯ hello-world
instrumentation
interceptors-opentelemetry
logger-shared
↓ monorepo-folders
↓ここの一覧が表示されるみたい
devcontainerとdocker-composeを用意する
temporalのdocker-composeは↓から持ってくる
あわせて dynamicconfig
も持ってくるのを忘れずに。
UIのポートが8080を別プロジェクトで使ってたので7070に変更
Workerを動かしてみる
npm run start.watch
エラー発生
TransportError: tonic::transport::Error(Transport, hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 99, kind: AddrNotAvailable, message: "Cannot assign requested address" })))
at Function.connect (/workspaces/temporal-tutorial/my-app/node_modules/@temporalio/worker/src/connection.ts:51:15)
at async Function.create (/workspaces/temporal-tutorial/my-app/node_modules/@temporalio/worker/src/worker.ts:457:47)
at async run (/workspaces/temporal-tutorial/my-app/src/worker.ts:7:18)
[nodemon] app crashed - waiting for file changes before starting...
devcontainerで動かしてるのでデフォルトのtemporalつなぎ先が localhost:7233
になっているのが原因。 worker.ts
と client.ts
の接続先を temporal:7233
に修正
Workerの起動成功。
Workflowの実行
client.ts
を npm run workflow
で実行してWorkflowを実行
npm run workflow
> temporal-hello-world@0.1.0 workflow
> ts-node src/client.ts
1675407201117
1675407201198
Hello, Temporal!
1675407201310
無事に実行された。
Timerのサンプル結構面白い
Signalの扱いだったりCancle, Queryも大事
Schedulesはかなり使えそう
Workflowのループ