java – Spring Batch – 从Aws S3读取文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring Batch – 从Aws S3读取文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1733字,纯文字阅读大概需要3分钟。
内容图文
![java – Spring Batch – 从Aws S3读取文件](/upload/InfoBanner/zyjiaocheng/819/482bbe5e694a49e888072c075a8f51a3.jpg)
我正在尝试从AWS S3读取文件并使用Spring Batch处理它:
Spring Itemreader可以处理此任务吗?
如果是这样,我如何将凭据传递给S3客户端并配置我的spring xml来读取一个或多个文件
<bean id="itemReader" class=""org.springframework.batch.item.file.FlatFileItemReader"">
<property name="resource" value=""${aws.file.name}"" />
</bean>
解决方法:
更新要使用Spring-cloud-AWS,您仍然可以使用FlatFileItemReader,但现在您不需要创建自定义扩展资源.
相反,您设置了一个aws-context并将其提供给您的S3Client bean.
<aws-context:context-resource-loader amazon-s3="amazonS3Client"/>
读者可以像任何其他读者一样进行设置 – 这里独一无二的是你现在可以自动装载你的ResourceLoader
@Autowired
private ResourceLoader resourceLoader;
然后设置该资源加载器:
@Bean
public FlatFileItemReader<Map<String, Object>> AwsItemReader() {
FlatFileItemReader<Map<String, Object>> reader = new FlatFileItemReader<>();
reader.setLineMapper(new JsonLineMapper());
reader.setRecordSeparatorPolicy(new JsonRecordSeparatorPolicy());
reader.setResource(resourceLoader.getResource("s3://" + amazonS3Bucket + "/" + file));
return reader;
}
我会使用FlatFileItemReader,需要进行的自定义就是创建自己的S3 Resource对象.扩展Spring的AbstractResource以创建您自己的AWS资源,其中包含AmazonS3客户端,存储桶和文件路径信息等.
对于getInputStream,请使用Java SDK:
S3Object object = s3Client.getObject(new GetObjectRequest(bucket, awsFilePath));
return object.getObjectContent();
然后为contentLength –
return s3Client.getObjectMetadata(bucket, awsFilePath).getContentLength();
和lastModified使用
.getLastModified().getTime();
您创建的资源将包含AmazonS3Client,其中包含您的spring-batch应用程序与S3通信所需的所有信息.这是Java配置的样子.
reader.setResource(new AmazonS3Resource(amazonS3Client, amazonS3Bucket, inputFile));
内容总结
以上是互联网集市为您收集整理的java – Spring Batch – 从Aws S3读取文件全部内容,希望文章能够帮你解决java – Spring Batch – 从Aws S3读取文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。