Java Mule:关闭流和排队异步

Java Mule:关闭流和排队异步,java,mule,mule-el,Java,Mule,Mule El,我有一个我刚刚从同步转换成队列异步的流。 在foreach中的某个时刻,我打开一个文件并设置一个FileInputStream,如下所示: public class FileAsStream { // return a fileInputStream. public FileInputStream fileAsStream(String fileName) { File file = new File(fileName); FileInputStr

我有一个我刚刚从同步转换成队列异步的流。 在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是否包装在流上下文中创建的对象?或者,在将流发送到端点后,是否需要以某种方式关闭流?

为什么失败?有什么例外?我不明白为什么异步会阻止关闭它,除非您尝试在某个点序列化负载。还有,为什么要使用自定义组件来完成文件传输可以通过请求者接口为您完成的任务呢?我一直在寻找一种类似于您建议的解决方案。使用请求者接口。我将对此进行研究,而不是使用自定义类。我只是不知道/发现在Mule中没有自定义代码是可能的。谢谢