EXM リトライ手法を設定する

Current version: 10.1

EXM は、一時的な障害処理フレームワークに基づいて、3 つのリトライ手法を使用します。一時的な障害処理の詳細については、Microsoft のこのドキュメントを参照してください。Sitecore の 3 つの EXM リトライ手法は次のとおりです。

  • EmailCampaign.EDS.Core.Net.Smtp.Send.Retryer (Send リトライ手法と呼ばれます)。EXM が SMTP 経由でメッセージを送信するために使用します。

  • EmailCampaign.EDS.Core.Net.Smtp.ValidateConnection.Retryer。EXM が接続プールから SMTP 接続を取得して検証するために使用します。

  • EmailCampaign.XConnect.Conflict.Retryer (xConnect 競合リトライ手法と呼ばれます)。xConnect との競合がある場合に EXM がメソッドを再試行するために使用します。

リトライ手法には、EXM の設定時に設定できるデフォルト値があります。以下のことができます。

  • エクスポネンシャル バックオフ リトライ戦略を設定します。

  • Send リトライ手法を固定間隔の再試行動作に変更します。

  • 特定の SMTP 関連の一時的な障害コードを Send リトライ手法に追加します。

Sitecore.EDS.Core.config ファイルには、最初の 2 つの EXM リトライ手法について、以下のような設定コードがあります。

RequestResponse
<TransientFaultHandling>
    <Retryers>
        <!-- Retryer to send messages over SMTP. -->
        <EDS.Core.Net.Smtp.Send.Retryer>
            <Type>Sitecore.EDS.Core.TransientFaultHandling.RetryerFactories.SmtpSendExponentialRetryerFactory, Sitecore.EDS.Core</Type>
            <!-- <Type>Sitecore.EDS.Core.TransientFaultHandling.RetryerFactories.SmtpSendFixedRetryerFactory, Sitecore.EDS.Core</Type> -->
            <Options>
                <ExponentialRetry>
                    <MaxAttempts>10</MaxAttempts>
                    <MinBackoff>00:00:01</MinBackoff>
                    <MaxBackoff>00:00:30</MaxBackoff>
                    <DeltaBackoff>00:00:10</DeltaBackoff>
                </ExponentialRetry>
                <!--
                <FixedRetry>
                    <RetryCount>3</RetryCount>
                    <RetryInterval>00:00:01</RetryInterval>
                    <FirstFastRetry>false</FirstFastRetry>
                </FixedRetry>
                -->
                <TransientSmtpErrorCodes>
                    <ServiceIsNotAvailable>421</ServiceIsNotAvailable>
                </TransientSmtpErrorCodes>
            </Options>
        </EDS.Core.Net.Smtp.Send.Retryer>
        <!-- Retryer to validate SMTP connection. -->
        <EDS.Core.Net.Smtp.ValidateConnection.Retryer>
            <Type>Sitecore.EDS.Core.TransientFaultHandling.RetryerFactories.SmtpValidateFixedRetryerFactory, Sitecore.EDS.Core</Type>
            <Options>
                <FixedRetry>
                    <RetryCount>3</RetryCount>
                    <RetryInterval>00:00:01</RetryInterval>
                    <FirstFastRetry>false</FirstFastRetry>
                </FixedRetry>
            </Options>
        </EDS.Core.Net.Smtp.ValidateConnection.Retryer>
    </Retryers>
</TransientFaultHandling>

エクスポネンシャル バックオフ リトライ戦略を設定する

デフォルトでは、Send リトライ手法は、エクスポネンシャル バックオフ リトライ動作を使用します。つまり、反復再試行はランダムな間隔で行われます。エクスポネンシャル バックオフ戦略の詳細については、Wikipedia のこの記事を参照してください

エクスポネンシャル バックオフ リトライ戦略を設定するには:

  • Send リトライ手法の <ExponentialRetry> セクションで、以下の値を設定します。

設定

デフォルト

説明

MaxAttempts

10

一時的な例外の再試行回数を指定します。この回数に達すると、リトライ手法はターゲット サービスを利用不可として定義します。

MinBackoff

00:00:01

再試行間の最小時間。

MaxBackoff

00:00:30

再試行間の最大時間。

DeltaBackoff

00:00:10

再試行間のデルタ バックオフ間隔。

Send リトライ手法を固定間隔の再試行動作に変換します。

EXM は、デフォルトの指数関数的な動作の代わりに、固定間隔で再試行するオプションをサポートしています。

間隔再試行動作に変換するには:

  1. Send リトライ手法のコードで、<ExponentialRetry> セクションを見つけて、コメント インジケーター <!-- および --> でコメントアウトします。

  2. <FixedRetry セクションを見つけて、コメント インジケーター <!-- および --> を削除して、コメントを解除します。

Send リトライ手法の <ExponentialRetry> セクションで、以下の値を設定できます。

設定

デフォルト

説明

RetryCount

3

一時的な例外の最大再試行回数を指定します。

RetryInterval

00:00:01

再試行間の固定時間間隔。

Send リトライ手法に一時的な障害コードを追加する

<TransientSmtpErrorCodes> セクションは、EmailCampaign.EDS.Core.Net.Smtp.Send.Retryer リトライ手法がチェックする SMTP 固有の一時的な障害を指定します。デフォルトでは、リトライ手法は常に障害コード 421 をチェックします。これは、受信者のサービスが利用できないことを示します。リトライ手法のチェックをより具体的にするために、このセクションに追加の障害コードを追加できます。

特定の障害コードを追加するには:

  1. 設定コードで、<TransientSmtpErrorCodes> セクションを見つけます。

  2. <YourDescription>[the fault code]</YourDescription> という新しい行を追加します。

ヒント

<YourDescription> フィールドを使用して、エラー コードの意味について、わかりやすい説明を記入します。

SMTP 一時障害コードとその意味の詳細については、「SMTP 拡張ステータス コード レジストリ 」を参照してください。

xConnect 競合リトライ手法を設定する

EXM は、xConnect との競合がある場合、EmailCampaign.XConnect.Conflict.Retryer を使用してメソッドを再試行します。このような競合が発生すると、リトライ手法は競合するエンティティを xConnect から再びフェッチしようとします。

Sitecore.EmailExperince.xConnect.config ファイル (パス: \<Your Instance Name>\App_Config\Sitecore\EmailExperience) に、次のような xConnect 競合リトライ手法の設定コードがあります。

RequestResponse
<TransientFaultHandling>
    <Retryers>
        <EmailCampaign.XConnect.Conflict.Retryer>
            <Type>Sitecore.EmailCampaign.XConnect.Web.TransientFaultHandling.RetryerFactories.XConnectConflictFixedRetryerFactory, Sitecore.EmailCampaign.XConnect.Web</Type>
            <Options>
                <FixedRetry>
                    <RetryCount>3</RetryCount>
                    <RetryInterval>00:00:01</RetryInterval>
                    <FirstFastRetry>false</FirstFastRetry>
                </FixedRetry>
            </Options>
        </EmailCampaign.XConnect.Conflict.Retryer>
    </Retryers>
</TransientFaultHandling>

xConnect 競合リトライ手法では、以下の値を設定できます。

設定

デフォルト

説明

RetryCount

3

競合するエンティティを xConnect からフェッチするための最大再試行回数を指定します。

RetryInterval

00:00:01

再試行間の固定時間間隔。

FirstFastRetry

false

競合が発生した直後に EXM が最初の再試行を実行するかどうかを指定します。デフォルトでは、これは false です。つまり、最初の再試行は RetryInterval に従って行われます。

Do you have some feedback for us?

If you have suggestions for improving this article,