---
title: "EXMリトライャーの設定"
slug: "configure-the-exm-retryers"
abstract: "EXMで使用されるリトライャの概要とその設定方法。"
---
# EXMリトライャーの設定

EXMは過渡的故障処理フレームワークに基づく3つのリトライャを使用します。暫過故障処理については、[Microsoftのこのドキュメント](https://docs.microsoft.com/en-us/azure/architecture/best-practices/transient-faults)で詳しく読むことができます。Sitecoreの3つのEXM再試行器は以下の通りです:

-   EmailCampaign.EDS.Core.Net.Smtp.Send.Retryer(Sendリトライャーと呼ばれる)は、SMTP経由でメッセージを送信するためにEXM使います。
-   EmailCampaign.EDS.Core.Net.Smtp.ValidateConnection.Retryerは、EXMが接続プールからSMTP接続を取得して検証するために使います。
-   EmailCampaign.XConnect.Conflict.Retryer(xConnect conflict retryerと呼ばれる)は、[xConnect](https://doc.sitecore.com/xp/en/developers/103/sitecore-experience-platform/en/xconnect-and-the-xdb.html)と競合がある場合にメソッドを再試すために使うものEXM。

リトライヤには[EXMの設定](https://doc.sitecore.com/xp/ja/developers/exm/103/email-experience-manager/the-exm-configuration-settings.html "The EXM configuration settings")時に設定できるデフォルト値があります。以下のことができます:

-   指数的バックオフ再試行戦略を設定してください。
-   Sendリトライャを固定間隔のリトライ動作に変換します。
-   Sendリトライヤに特定のSMTP関連の一時故障コードを追加します。

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リトライは指数的なバックオフリトライ動作を用いており、これは繰り返しリトライをランダムな間隔で間隔を空けていることを意味します。指数的バックオフ戦略の詳細については、[ウィキペディアのこの記事をご覧ください](https://en.wikipedia.org/wiki/Exponential_backoff)。

指数的バックオフ戦略の設定:

-   Sendリトライャーの<ExponentialRetry>セクションで、以下の値を設定します:

舞台設定

デフォルト

概要

マックス・エブリッツ

10

一時的な例外に対する再試行回数を指定します。この量に達すると、再試行者は対象サービスを利用不可と定義します。

ミンバックオフ

00:00:01

再試試までの最小期間。

マックスバックオフ

00:00:30

再挑戦までの最大期間。

デルタバックオフ

00:00:10

リトライ間のデルタバック間隔。

## Sendリトライを固定間隔のリトライ動作に変換します

EXMは、デフォルトの指数関数的な動作ではなく、一定間隔でのリトライオプションをサポートしています。

インターバル再試行動作に変換するには:

1.  Sendリトライアーのコードで<ExponentialRetry>セクションを見つけ、コメントインジケーター<!--と\-->でコメントアウトします。
2.  <FixedRetryセクションを見つけて、コメントインジケーター<!--と\-->を削除してコメントを取り消してください。

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

舞台設定

デフォルト

概要

リトライカウント

3

一時例外の最大リトライ回数を指定します。

リトライインターバル

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強化ステータスコードレジストリ](https://www.iana.org/assignments/smtp-enhanced-status-codes/smtp-enhanced-status-codes.xhtml)を参照してください。

## 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のコンフリクトリトライャでは、以下の値を設定できます:

舞台設定

デフォルト

概要

リトライカウント

3

xConnectから競合するエンティティを取得するための最大リトライ回数を指定します。

リトライインターバル

00:00:01

リトライ間の固定された時間間隔。

ファーストファストリトライ

偽り

EXM競合に遭遇した直後に最初の再試行を行うかどうかを指定します。デフォルトではこれは偽であり、最初の再試行は RetryIntervalに従って行われます。

## OAuthの再試行を設定してください

EXMエラーが発生した場合に備えてメソッドを再試行するためにSitecore.ExM.Framework.Helpers.OAuthRetryを使用します。

Sitecore.EmailExperience.Core.configファイル(パス:\\&lt;Your Instance Name&gt;\\App\_Config\\Sitecore\\EmailExperience)には、OAauth retryの構成コードが以下の通りです:

<oauthRetry type="Sitecore.ExM.Framework.Helpers.OAuthRetry, Sitecore.ExM.Framework" singleInstance="true">
 <param desc="delay">5000</param>
 <param desc="retryCount">3</param>
</oauthRetry>

oAuth retryでは、以下の値を設定できます:

舞台設定

デフォルト

概要

遅延

5000

再試行間の遅延を指定します。

リトライカウント

3

最大リトライ回数を指定します。