メッセージソースのライフサイクル

ライフサイクルが所有フローに関連付けられている場合、操作とは異なり、ソースは Runtime Manager で個別に開始または停止できます。

これをサポートするために、​Source​ クラスでは、​onStart()​ および ​onStop()​ メソッドを実装する必要があります。

onStart

VM Connector の次の例は、​onStart()​ メソッドを示しています。

@Override
public void onStart(SourceCallback<Serializable, VMMessageAttributes> sourceCallback) throws MuleException {

}

このメソッドでは、メッセージを生成できるように必要なすべてのリソース (スレッド、スケジューラー、接続など) を初期化する必要があります。これを実行しようとしているときに例外またはエラー状況が見つかった場合、次の作業を行う必要があります。

  • 割り当てなかったリソースを解放する。

  • わかりやすいメッセージと共に例外をスローする。

ソースを開始できない場合、そのソースが含まれるアプリケーションは開始できません。

この時点で ​@Parameter​ アノテーションで定義されているすべてのソースパラメーター値が解決されて使用できるようになります。

SourceCallback

メソッドは SourceCallback オブジェクトを受信します。​SourceCallback​ は、ソースの機能のほぼすべての側面に関わるため、ソースの最も重要な部分と言えます。​SourceCallback​ の用途や役割についての詳細は、このドキュメントを読み進めていくなかで確認できますが、簡単に言うと ​SourceCallback​ は Runtime と通信するためにソースで使用されるものです。この用途を次に示します。

  • メッセージをフローにプッシュする。

  • 接続の問題を伝えて、再接続をトリガーする。

  • ソースのプッシュフェーズ間の状態を応答処理部分に渡す。

SourceCallback​ はこのように重要な役割を担っているため、指定されたインスタンスが常に使用できることが非常に重要です。ソースの複雑さやコードの編成によっては、メソッド引数として保持するだけでこれを実現できる場合があります。より複雑なソースでは、インスタンス項目でその参照を保持することが必要になる可能性もあります。これを行う場合、​onStop()​ メソッドの実行時に参照がクリアされていることを確認する必要があります。

onStop

このメソッドは、ソースによるメッセージの生成を停止するために Runtime によって呼び出されます。​このメソッドは失敗しないようにする必要があります​。停止プロセス中に見つかった例外は、ソースによって記録され、適切に処理される必要がありますが、このメソッドの呼び出した後、ソースは次の作業を行う (次の状態になっている) 必要があります。

  • メッセージの生成を停止する。

  • 割り当てられたリソースを解放する。

  • 再起動できる状態になっている。