尝试一个非常简单的骆驼路线:
from("aws-s3://javatutorial1232boomiau?amazonS3Client=#s3client&deleteAfterRead=true&fileName=My2.jsp").process(Empty2).log(LoggingLevel.INFO, "Replay Message Sent to file:s3out ${in.header.CamelAwsS3Key}")
.to("stream:out");
我正在使用版本 2.20.2(截至今天最新)。该文件未从存储桶中删除。我已经做了一些研究,从外观上看,传递给 processCommit 方法的交换缺少任何标头。它正在寻找的标头是存储桶名称和密钥
String bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
String key = exchange.getIn().getHeader(S3Constants.KEY, String.class);
我也尝试过 to("file://Users/user/out.txt") 文件也没有被删除,并且标题似乎是文件组件的标题。
编辑:
我注意到如果我删除 .processor(Empty2) 文件将从存储桶中删除。处理器不做任何工作:
@Override
public void process(Exchange exchange) throws Exception {
Object body = exchange.getIn().getBody();
System.out.println("1: "+body);
Object body2 = exchange.getOut().getBody();
System.out.println("2: "+body2);
}
那么,为什么没有它它会工作,而没有处理器却不能呢?如果无法使用处理器,我应该如何处理消息?