Mule アプリケーション内の操作が外部サーバーへの接続に失敗すると、デフォルト動作ではその操作は直ちに失敗し、接続エラーが返されます。
たとえば、FTP 用 Anypoint Connector (FTP Connector) の操作が FTP サーバーへの接続に失敗すると、操作は FTP:CONNECTIVITY エラーをスローします。エラー名には、FTP:CONNECTIVITY や DB:CONNECTIVITY (データベース用 Anypoint Connector (Database Connector) の場合) など、コネクタ固有の名前空間が反映されます。
このデフォルト動作を変更するには、操作の再接続戦略を設定します。
操作を実行しても、接続エラーで失敗すると、FTP Connector で設定された再接続戦略はトリガーされません。この例では、新規または更新されたファイルを照会する FTP サーバーで ftp:listener を確立する必要がある接続にのみ再接続戦略が適用されます。
|
操作の再接続戦略の設定
操作の再接続戦略を設定するには、操作のプロパティを変更するか、または操作のグローバル要素の設定を変更します。たとえば、FTP Connector 設定で再接続戦略を設定できます。
使用できる再接続戦略とそれぞれの動作は次のとおりです。
-
None (なし)
デフォルトの動作です。接続に失敗すると直ちに接続エラーを返します。
-
Standard (標準) (
reconnect)接続エラーを返すまでの再接続試行回数と再接続を実行する間隔を設定します。
-
Forever (無期限) (
reconnect-forever)指定された間隔で再接続を継続して試みます。
XML 再接続戦略設定の例
それぞれの再接続戦略と設定の例を示します。
-
Standard 再接続戦略の例
FTP Connector 設定における Standard 再接続戦略の例です。失敗までの再接続試行回数を
5 に設定し、接続テストが失敗した場合にはアプリケーションのデプロイも失敗するように failsDeployment を true に設定します。頻度が指定されていないため、デフォルトの 2000 ms ごとに接続が再試行されます。<ftp:config name="FTP_Config" doc:name="FTP Config" > <ftp:connection host="ftp.someftphost.com" port="21" username="myusername" password="mypassword" > <reconnection failsDeployment="true" > <reconnect count="5"/> </reconnection> </ftp:connection> </ftp:config> <flow name="reconnectionsFlow" > <ftp:listener doc:name="On New or Updated File" config-ref="FTP_Config"> <scheduling-strategy > <fixed-frequency /> </scheduling-strategy> </ftp:listener> </flow> -
Forever 再接続戦略の例
FTP Connector 設定における Forever 再接続戦略の例です。コネクタは、アプリケーションが実行されている限り、4000 ms ごとに接続を再試行します。
<ftp:connection host="ftp.someftphost.com" port="21" username="myusername" password="mypassword" > <reconnection> <reconnect-forever frequency="4000"/> </reconnection> </ftp:connection>
再接続戦略リファレンス
Mule アプリケーションの XML 設定ファイルを編集することで設定できる再接続戦略ごとの設定属性を以下に示します。
-
<reconnection> の属性名前 型 必須 デフォルト 説明 failsDeploymentboolean (ブール)
no (いいえ)
false
true の場合は、接続テストが失敗するとデプロイも失敗します。 -
<reconnect> の属性名前 型 必須 デフォルト 説明 blockingboolean (ブール)
no (いいえ)
true
false の場合は、再接続戦略が個別の非ブロックスレッドで実行されます。frequencylong (ロング)
no (いいえ)
2000
再接続する頻度 (ミリ秒)
countinteger (整数)
no (いいえ)
2
再接続を試みる回数
-
<reconnect-forever> の属性名前 型 必須 デフォルト 説明 blockingboolean (ブール)
no (いいえ)
true
false の場合は、再接続戦略が個別の非ブロックスレッドで実行されます。frequencylong (ロング)
no (いいえ)
2000
再接続する頻度 (ミリ秒) を指定します。