ガイド
バックグラウンド処理の再試行
バックグラウンド処理の再試行でも同じメールリクエストを使います。
リクエストを保存
最初の送信前に、宛先、テンプレート、変数、指定する場合は言語、固有の冪等性キーをジョブに保存します。毎回その値を読み込んでください。以下の JavaScript の例で保存するデータを示します。
JavaScript
import { Sendery } from '@sendery/sdk';
const apiKey = process.env.SENDERY_API_KEY;
if (!apiKey) throw new Error('Set SENDERY_API_KEY on your server.');
const sendery = new Sendery(apiKey);
// Save this object with your job before the first attempt.
const job = {
key: 'welcome-123',
input: {
to: '[email protected]',
template: 'welcome',
data: { name: 'Alex', action_url: 'https://example.com/start' },
},
};
// On each attempt, load the same saved object.
const receipt = await sendery.prepare(job.input, job.key).send();タイムアウトへの対応
受付後にタイムアウトする場合があります。元のキーで保存済みリクエストを再試行すると、受付済みなら元の ID が返ります。変更後のユーザーや注文からデータを作り直すと 409 idempotency_conflict になる場合があります。
再試行の上限
ジョブの最大試行回数と待機時間を設定します。SDK の各リクエストは 10 秒でタイムアウトします。例では send() でジョブごとに 1 回試行します。その中でも再試行したい場合にのみ retry() を使ってください。レート制限では Retry-After に従い、検証・支払いエラーは修正してから再試行します。
受付後
メッセージ ID を保存して配信状態を確認します。受付済みリクエストの再試行は、失敗した配信を再送する操作ではありません。意図的な再送には新しいキーを使います。