EXM リトライ手法を設定する
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 リトライ手法について、以下のような設定コードがあります。
<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 は、デフォルトの指数関数的な動作の代わりに、固定間隔で再試行するオプションをサポートしています。
間隔再試行動作に変換するには:
-
Send
リトライ手法のコードで、<ExponentialRetry>
セクションを見つけて、コメント インジケーター<!--
および-->
でコメントアウトします。 -
<FixedRetry
セクションを見つけて、コメント インジケーター<!--
および-->
を削除して、コメントを解除します。
Send
リトライ手法の <ExponentialRetry>
セクションで、以下の値を設定できます。
設定 |
デフォルト |
説明 |
---|---|---|
RetryCount |
3 |
一時的な例外の最大再試行回数を指定します。 |
RetryInterval |
00:00:01 |
再試行間の固定時間間隔。 |
Send リトライ手法に一時的な障害コードを追加する
<TransientSmtpErrorCodes>
セクションは、EmailCampaign.EDS.Core.Net.Smtp.Send.Retryer
リトライ手法がチェックする SMTP 固有の一時的な障害を指定します。デフォルトでは、リトライ手法は常に障害コード 421 をチェックします。これは、受信者のサービスが利用できないことを示します。リトライ手法のチェックをより具体的にするために、このセクションに追加の障害コードを追加できます。
特定の障害コードを追加するには:
-
設定コードで、
<TransientSmtpErrorCodes>
セクションを見つけます。 -
<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 競合リトライ手法の設定コードがあります。
<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 です。つまり、最初の再試行は |