Java 如何拆分Apache camel AWS-S3消息
我需要将文件从一个S3存储桶移动到另一个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
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(消息);
}
返回消息列表;
}