再接続戦略

Mule アプリケーション内の操作が外部サーバーへの接続に失敗すると、デフォルト動作ではその操作は直ちに失敗し、接続エラーが返されます。

たとえば、FTP 用 Anypoint Connector (FTP Connector) の操作が FTP サーバーへの接続に失敗すると、操作は ​FTP:CONNECTIVITY​ エラーをスローします。エラー名には、​FTP:CONNECTIVITY​ や ​DB:CONNECTIVITY​ (データベース用 Anypoint Connector (Database Connector) の場合) など、コネクタ固有の名前空間が反映されます。

このデフォルト動作を変更するには、操作の再接続戦略を設定します。

操作の再接続戦略の設定

操作の再接続戦略を設定するには、操作のプロパティを変更するか、または操作のグローバル要素の設定を変更します。たとえば、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>​ の属性

    Name (名前) 必須 デフォルト 説明

    failsDeployment

    boolean (ブール)

    no (いいえ)

    false

    true​ の場合は、接続テストが失敗するとデプロイも失敗します。

  • <reconnect>​ の属性

    Name (名前) 必須 デフォルト 説明

    blocking

    boolean (ブール)

    no (いいえ)

    true

    false​ の場合は、再接続戦略が個別の非ブロックスレッドで実行されます。

    frequency

    long (ロング)

    no (いいえ)

    2000

    再接続を試みるまでの待ち時間 (ミリ秒)

    count

    integer (整数)

    no (いいえ)

    2

    再接続を試みる回数

  • <reconnect-forever>​ の属性

    Name (名前) 必須 デフォルト 説明

    blocking

    boolean (ブール)

    no (いいえ)

    true

    false​ の場合は、再接続戦略が個別の非ブロックスレッドで実行されます。

    frequency

    long (ロング)

    no (いいえ)

    2000

    再接続する頻度 (ミリ秒) を指定します。