Sendery
Sendery

ガイド

バックグラウンド処理の再試行

バックグラウンド処理の再試行でも同じメールリクエストを使います。

リクエストを保存

最初の送信前に、宛先、テンプレート、変数、指定する場合は言語、固有の冪等性キーをジョブに保存します。毎回その値を読み込んでください。以下の 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 を保存して配信状態を確認します。受付済みリクエストの再試行は、失敗した配信を再送する操作ではありません。意図的な再送には新しいキーを使います。