Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 骆驼s3消费者每次轮询同一个文件_Amazon S3_Apache Camel - Fatal编程技术网

Amazon s3 骆驼s3消费者每次轮询同一个文件

Amazon s3 骆驼s3消费者每次轮询同一个文件,amazon-s3,apache-camel,Amazon S3,Apache Camel,我是apache camel框架的新手,使用的是2.15.1版本。 我的用例是轮询AWSS3 bucket并从中下载新创建的文件,为此,我将执行以下操作 **camel-route** from("aws-s3://" + Constants.S3_BUCKET + "?amazonS3Client=#client&deleteAfterRead=false") .routeId("awsFileCopyRoute") .log(LoggingLev

我是apache camel框架的新手,使用的是2.15.1版本。 我的用例是轮询AWSS3 bucket并从中下载新创建的文件,为此,我将执行以下操作

**camel-route**

from("aws-s3://" + Constants.S3_BUCKET + "?amazonS3Client=#client&deleteAfterRead=false") 
        .routeId("awsFileCopyRoute") 
        .log(LoggingLevel.INFO, "awsFileCopyRoute", "Camel AWS Key: ${header.CamelAwsS3Key}") 
        .to("file://" + Constants.REQ_FOLDER + "?fileName=${header.CamelAwsS3Key}"); 

the awsS3Client "client" i'm setting in applicationContext.xml as follows 

<bean id="defaultAWSCredentialsProviderChain" class="com.amazonaws.auth.DefaultAWSCredentialsProviderChain" />
<bean id="clientConfiguration" class="com.amazonaws.ClientConfiguration" />

<bean id="client" class="com.amazonaws.services.s3.AmazonS3Client">
        <constructor-arg ref="defaultAWSCredentialsProviderChain" />
        <constructor-arg ref="clientConfiguration" />
</bean>
**骆驼路线**
from(“aws-s3://”+Constants.s3_BUCKET+“?amazonS3Client=#client&deleteAfterRead=false”)
.routeId(“awsFileCopyRoute”)
.log(LoggingLevel.INFO,“awsFileCopyRoute”,“Camel AWS键:${header.CamelAwsS3Key}”)
.to(“文件:/”+Constants.REQ_FOLDER+”?文件名=${header.camelaws3key}”);
我在applicationContext.xml中设置的awsS3Client“client”如下
我的问题是骆驼正在一次又一次地轮询和下载同一个文件。我希望camel从Constants.REQ_文件夹中不存在的aws s3下载文件,并避免camel下载已经存在的文件

谁能帮帮我

问候,,
Raghav

因为您使用的deleteAfterRead等于false,所以每次消费者轮询S3存储桶时,您都会得到相同的文件集,Camel将再次处理每个文件


您需要使用幂等存储库或构建自己的自定义处理器来跳过Constants.REQ_文件夹中已有的文件,或者您可以使用Camel提供的缓存组件之一,在下载文件后将S3密钥放入缓存,并在再次加载之前检查缓存中的密钥,通过在缓存上使用get操作。

已经有一段时间了,但不知道您是否找到了解决方案。我认为幂等消费者应该是解决方案。