首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当deleteAfterRead为false时,Idempotent AWS2-S3使用者不会从桶中检索所有文件

当deleteAfterRead为false时,Idempotent AWS2-S3使用者不会从桶中检索所有文件
EN

Stack Overflow用户
提问于 2022-03-25 05:52:23
回答 1查看 314关注 0票数 0

我与基于MemoryIdempotentRepository的幂等用户一起使用Camel AWS-S3,并尝试使用Camel AWS-S3版本3.14.2读取AWS/S3桶中的所有文件。其目的是将检索到的文件保存在桶中,因此,deleteAfterRead设置为false。在调试我的代码时,我看到连续的轮询总是只检索一个文件,这个文件总是相同的。在第二次轮询之后,该文件被正确地视为重复文件,并被忽略。在我的调试日志中,我看到“使用id忽略重复消息.”为了这份文件。但是,尽管我的AWS/S3桶中有更多的文件要检索,但是在启动下一个轮询的轮询延迟到期之前不会发生任何事情。但是下一次投票只检索相同的已标记的重复文件,等等.

在忽略前一个文件之后,使s3client继续检索桶中的下一个文件所需的内容。从3.9.0开始的所有版本的骆驼都表现出相同的行为。

有没有人遇到过同样的问题,知道如何解决这个问题?

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

发布于 2022-03-25 11:28:35

Apache AWS2 S3组件应该根据需要正确地轮询AWS S3桶文件。

只有一个文件被投票应该意味着:

  • 您可以在配置使用者时同时指定bucketNamefileName,这将解析为一次又一次轮询同一个文件。
  • maxMessagesPerPoll设置为1,同时不删除处理过的消息,这将解析为反复轮询同一个文件。
  • 设置与单个文件匹配的prefixdelimiter配置选项

您应该开始检查您的端点配置,以确定这些错误配置选项是否适用。

另一方面,要实现幂等效应,您有两种方法之一:

  • 将您的使用者端点配置为moveAfterRead,以便将处理过的文件复制到目标桶中,避免它们在下一次迭代中被重新轮询(您需要配置destination桶)。此解决方案将取决于您的需求,并且仅当您负担得起在另一个桶中有文件时才适用,这意味着没有其他组件/服务依赖于同一源桶中的这些文件。
  • 配置由您选择的存储库支持的IdempotentConsumer,在这种情况下,您可以标记(并保存)处理过的消息
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71612701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档