spring - 从 ftp 读取大型 csv 文件时,Spring 集成堆空间错误
问题描述
从 ftp 读取大型 csv 文件时,我遇到了 spring 集成问题。csv 文件有 150 万行。
这是我的配置
@Bean
public IntegrationFlow automaticRouteFlow() {
return p -> p
.transform(unZipTransformer(), e -> e.advice())
.split(new UnZipResultSplitter())
.enrichHeaders(s -> s.headerExpressions(h -> h
.put(FtpConstant.UNCOMPRESSED_DIR, "payload.getParentFile()")
.put(FtpConstant.UNCOMPRESSED_FILE, "payload"))
.header(FtpConstant.FAILED_PATH, failedDirectory)
)
.split(Files.splitter(true), e -> e.advice(fileHandlerAdvice()))
.transform(o -> {
try {
return routeManagementTransformer.transform(o.toString());
} catch (Exception e) {
return new PollSkipAdvice();
}
}
)
.transform(Transformers.toJson())
.filter(o -> !o.toString().equals("{}"))
.channel(MessageChannels.queue())
.handle(kafkaMessageHandler(kafkaTemplate, topic),
e -> {
e.poller(
Pollers.fixedDelay(queueFixDelay).maxMessagesPerPoll(queueMaxMessagesPerPoll));
e.advice(directoryHandler());
}
);
}
我设置了 5 个 queueMaxMessagesPerPoll ,并且我在 routeManagementTransformer.transform 中的每一行验证 null 和空数据,没有拉到数据库。它只是在每一行中验证不是 null 并且不是空白我的代码有什么问题吗?
解决方案
推荐阅读
- vba - 除了代码之外,还有什么会导致错误?VBA
- javascript - 四舍五入到小数点后 6 位
- amazon-web-services - Glowroot - GRPC、SSL 和 AWS
- ruby-on-rails - 如何检查一条记录的两个字段是否具有相同的值?
- ios - NSUndoManager 撤消和重做操作出现问题
- node.js - MQTT 如何在物联网中发送回客户端?
- android - 在后台运行服务而不显示应用程序
- c# - 如何在没有用户名和密码的情况下访问 REST API 方法 - 但只能使用令牌?
- ios - 动画 tableView 的高度以适应屏幕上的内容
- threadpool - 处理来自 Cassandra nio 工作线程的 Reactive Cassandra 的结果