performer와 enqueue로 구성
사용자는 잡 처리를 performer로 정의하고, 등록하는 곳에서 enqueue를 호출합니다. 잡의 전달, 실행, 상태 기록은 Tsumugi가 처리합니다.
Cloudflare Queues를 잡 큐로 직접 사용하면 몇 가지 문제가 생깁니다.
01
02
concurrencyKey를 지정한 잡이 한 건씩 순서대로 실행됩니다.03
04
작성하는 곳은 잡 처리의 정의와 등록, 단 두 곳뿐입니다.
1 잡 처리를 performer로 정의
import { Performer } from 'tsumugi/performer';export class SendMail extends Performer<{ to: string }, void, {}, Env> { async perform(payload: { to: string }): Promise<void> { await this.env.MAILER.send(payload.to); }}2 잡 등록
import { defineTsumugi } from 'tsumugi';import { SendMail } from './performers/send-mail.js';const tsumugi = defineTsumugi({ performers: { SendMail } });const id = await tsumugi.enqueue(env, { binding: 'SendMail', payload: { to: 'a@example.com' } });사용자는 잡 처리를 performer로 정의하고, 등록하는 곳에서 enqueue를 호출합니다. 잡의 전달, 실행, 상태 기록은 Tsumugi가 처리합니다.
재시도, 백오프, 예약 실행, 정기 실행, 우선순위, 동시 실행 수와 속도 제한, 중복 제거, 대시보드를 Tsumugi의 기본 기능으로 제공합니다.
대시보드와 REST API는 성공과 실패를 포함한 모든 잡에 대해 상태 목록 표시와 검색을 제공합니다. TSUMUGI_METRICS binding을 설정하면 실패율과 실행 시간 메트릭도 기록합니다.

노드와 의존 관계를 선언하면, 앞 노드의 반환값이 다음 노드의 payload로 전달됩니다. fan-out을 정의하면 배열 요소마다 자식 노드가 만들어져 병렬로 실행됩니다.
enqueue(env, { binding, payload })를 호출하면 Tsumugi가 잡을 등록합니다. 반환값은 잡 ID이며, 호출은 즉시 완료됩니다.
guarantee에 at-most-once를 지정한 잡은 두 번 실행되지 않습니다. guarantee의 기본값은 at-least-once입니다.
performer를 Service Binding으로 연결한 다른 Worker에 배치한 경우에도 Tsumugi는 performer를 실행합니다.

