同期からキュー非同期に変換したばかりのフローがあります。foreach のある時点で、次のようにファイルを開き、FileInputStream を設定しています。
public class FileAsStream {
// return a fileInputStream.
public FileInputStream fileAsStream(String fileName) {
File file = new File(fileName);
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
} catch (IOException e) {
e.printStackTrace();
} finally {
return fis;
}
}
次に、FileInputStream がペイロードになり、http または sftp エンドポイントに送信します。フローが同期の場合、#[payload.close()] を実行してストリームを閉じることができました。しかし、非同期になったので、できるようには見えません。ストリームを閉じようとすると失敗します。私の質問は、ストリームを閉じるかどうかが重要かどうかです。Mule は、フローのコンテキストで作成されたオブジェクトをラップしますか? または、ストリームがエンドポイントに送信された後、どうにかしてストリームを閉じる必要がありますか?