如何在Apache Camel中只读取一次S3文件

时间:2017-11-26 02:54:04

标签: amazon-s3 apache-camel apache-camel-aws

我的DSL启动是这样的:

from("aws-s3://" + s3_bucket_name + "?amazonS3Client=#amazonS3Client&deleteAfterRead=false&fileName=myfile.csv")

在此之后,我将每一行转换为JSON文件并转储到本地目录。

问题是它继续这样做,就像陷入无限循环一样。

知道如何处理文件一次然后停止吗?

2 个答案:

答案 0 :(得分:1)

您可以阅读此常见问题解答,了解如何从路线中停止路线:http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html

或者使用ConsumerTemplate仅使用{{1}}轮询s3file而不是路由。

答案 1 :(得分:0)

您可以使用Idempotent Consumer

from("aws-s3://" + s3_bucket_name + "?amazonS3Client=#amazonS3Client&deleteAfterRead=false&fileName=myfile.csv")
.idempotentConsumer(header("CamelAwsS3Key"), idempotentRepository)

您可以根据上述链接中提到的需要提供idempotentRepository的实现。