Amazon s3 骆驼s3消费者每次轮询同一个文件
我是apache camel框架的新手,使用的是2.15.1版本。 我的用例是轮询AWSS3 bucket并从中下载新创建的文件,为此,我将执行以下操作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
**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操作。已经有一段时间了,但不知道您是否找到了解决方案。我认为幂等消费者应该是解决方案。