Open9

TemporalをTypeScriptで試す

kenfdevkenfdev
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

↓ここの一覧が表示されるみたい
https://github.com/temporalio/samples-typescript#samples

kenfdevkenfdev

devcontainerとdocker-composeを用意する

temporalのdocker-composeは↓から持ってくる
https://github.com/temporalio/docker-compose/blob/main/docker-compose.yml

あわせて dynamicconfig も持ってくるのを忘れずに。
https://github.com/temporalio/docker-compose/tree/main/dynamicconfig

UIのポートが8080を別プロジェクトで使ってたので7070に変更
https://docs.temporal.io/references/web-ui-environment-variables#temporal_ui_port

kenfdevkenfdev

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.tsclient.ts の接続先を temporal:7233 に修正

Workerの起動成功。

kenfdevkenfdev

Workflowの実行

client.tsnpm run workflow で実行してWorkflowを実行

npm run workflow

> temporal-hello-world@0.1.0 workflow
> ts-node src/client.ts

1675407201117
1675407201198
Hello, Temporal!
1675407201310

無事に実行された。