Java 如何拆分Apache camel AWS-S3消息

Java 如何拆分Apache camel AWS-S3消息,java,amazon-web-services,amazon-s3,apache-camel,Java,Amazon Web Services,Amazon S3,Apache Camel,我需要将文件从一个S3存储桶移动到另一个S3存储桶,在此过程中,我需要拆分文件(即图像文件) 所以,我就是这样做的 camelContext.addRoutes(new RouteBuilder() { @Override public void configure() throws Exception { from(sourcePoint.getS3SourcePoint()).split().method(new SheetImag

我需要将文件从一个S3存储桶移动到另一个S3存储桶,在此过程中,我需要拆分文件(即图像文件)

所以,我就是这样做的

camelContext.addRoutes(new RouteBuilder() {

        @Override
        public void configure() throws Exception {

            from(sourcePoint.getS3SourcePoint()).split().method(new SheetImageSplitterImpl(), "split").to(destinationPoint.getS3DestinationPoint());
        }
    });

    camelContext.start();
在SheetImageSplitter的split()方法中,我试图实现分割图像文件的逻辑。exchange主体将返回类型为S3Object.inputStream的主体。我找不到任何帮助来将S3ObjectInputStream转换为图像文件

public List<Message> split(Exchange exchange) {

    System.out.println(exchange.getIn().getBody());
}
公用列表拆分(Exchange){
System.out.println(exchange.getIn().getBody());
}
有没有办法,这样我可以处理图像文件

public List<Message> split(Exchange exchange) {

    System.out.println(exchange.getIn().getBody());
}

注意:我正在使用Java DSL

为什么需要分割图像文件?我不知道S3,但下面的代码应该创建一个图像文件:

BufferedImage imBuff = ImageIO.read(inputStream);

希望有帮助。

您可以将该
S3ObjectInputStream
转换为
InputStream
,并将其放回消息中

public List<message> split(Exchange exchange){
      InputStream iStream = (InputStream) exchange.getIn().getBody();
      File file = new File("tmp/filename.jpg");
      FileUtils.copyInputStreamToFile(iStream, file);

      List<File> files = <your splitting logic method>

      List<Message> messageList = new ArrayList<Message>();
      for (File file : files) {
           DefaultMessage message = new DefaultMessage(); 
           InputStream ip = new FileInputStream(file.getName());
           message.setBody((InputStream) ip);
           messageList.add(message);
    }
    return messageList;
}
公用列表拆分(Exchange){
InputStream iStream=(InputStream)exchange.getIn().getBody();
File File=新文件(“tmp/filename.jpg”);
copyInputStreamToFile(iStream,文件);
列表文件=
List messageList=new ArrayList();
用于(文件:文件){
DefaultMessage=新的DefaultMessage();
InputStream ip=新文件InputStream(file.getName());
message.setBody((InputStream)ip);
messageList.add(消息);
}
返回消息列表;
}