Как прочитать файл 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 в зависимости от ваших потребностей, как указано в ссылке выше.