あなたはTransport Service Overrideを活用することができます:私はあなたがMuleのバージョンの既存の受信機のpoll()
機能を無効に推薦する
<sftp:connector name="sftp-connector" ... />
...
<service-overrides messageReceiver="com.mycomp.MySftpMessageReceiver" />
</sftp:connector>
:自分SftpMessageReceiver
を実装し、そのように、このカスタムコンポーネントを使用するようにSFTPコネクタを設定使っている。 Mule 3.9では、すべてのファイルを取得し、見つかったファイルごとにrouteFile()
を呼び出します。独自のpoll()
を実装して、代わりに最新の10個のファイルを選択し、同じ動作を再現することができます。完全なコードサンプルはここでは提供しませんが、既存の関数(取得、ロック、ルート)のインスピレーションを得て、独自の実装を実装することができます。例:既存のSftpMessageReceiver
を上書き
public class MySftpMessageReceiver extends SftpMessageReceiver {
...
@Override
public void poll() throws Exception {
//poll 10 oldest files
//...
//route them
for (String file : files){
//...
routeFile(file);
}
}
...
}
ノートは、単に他の人の間で移動するための方法です。考え方はあなた自身のMessageReceiver
を実装し、上記のようにサービスオーバーライドを使用することです。
編集:@NNishanthiによると、プライベートなものを取得するリクエストSftpReceiverRequesterUtil
:独自のインスタンスを作成したり、スーパーコンストラクタによって作成されたインスタンスを取得することができます。
コードを見ると、保護されたcreateSftpReceiverRequesterUtil()
関数で作成され、コンストラクタによるプライベートフィールドの影響を受けることがわかります。あなたがSFTPを使用したいかでください
private SftpReceiverRequesterUtil sftpRRUtil = null;
...
@Override
protected SftpReceiverRequesterUtil createSftpReceiverRequesterUtil(InboundEndpoint endpoint) {
sftpRRUtil = super.createSftpReceiverRequesterUtil(endpoint);
return sftpRRUtil;
}
:あなたのような、この動作を複製するか、またはインスタンス化オブジェクトを取得するには、このメソッドをオーバーライドして、独自のフィールドに影響を与え、重複を避けるために、独自のコンストラクタでこの関数を呼び出すことができますFTPコネクタ?これらは別のものです(正確な答えを編集してください) –
申し訳ありませんが、誤ってFTPを追加しました。私はSFTPコネクタが必要です。私は私の質問を更新しました。 –