【发布时间】:2021-07-28 12:15:45
【问题描述】:
我为处理多个文件创建了一个 Spring Batch Integration 项目,它的工作原理非常棒。
在我写这个问题时,我有 四个 Pod 正在运行,但行为并不像我预期的那样,我预计同时处理 20 个文件(每个 Pod 五个) .
我的 pooler 设置使用以下参数:
poller-delay: 10000
max-message-per-poll: 5
我也使用 Redis 来存储文件和过滤:
private CompositeFileListFilter<S3ObjectSummary> s3FileListFilter() {
return new CompositeFileListFilter<S3ObjectSummary>().addFilter(
new S3PersistentAcceptOnceFileListFilter(new RedisMetadataStore(redisConnectionFactory), "prefix-"))
.addFilter(new S3RegexPatternFileListFilter(".*\\.csv$"));
}
似乎每个 pod 只处理一个文件,另一种奇怪的行为是其中一个 pod 注册了 Redis 中的所有文件,所以其他 pod 只获取新文件。
同时处理多个文件的最佳做法是什么以及如何解决这个问题?
【问题讨论】:
标签: spring-batch spring-integration spring-batch-integration