Как прочитать файл S3 только один раз в Apache Camel

Мой старт DSL выглядит примерно так:

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

после этого я преобразую каждую строку в файл JSON и помещаю в локальный каталог.

Проблема в том, что он продолжает делать это, как будто он застрял в бесконечном цикле.

Есть идеи, как обработать файл только один раз, а затем остановить?

2 ответа

Вы можете прочитать этот FAQ о том, как остановить маршрут из маршрута: http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html

Или вместо маршрута вы используете ConsumerTemplate опросить s3-файл только один раз.

Вы можете использовать Idempotent Consumer

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

Вы можете обеспечить реализацию idempotentRepository в зависимости от ваших потребностей, как указано в ссылке выше.

Другие вопросы по тегам