spring-integration - Spring Integration Mail:在所有数据库插入后发送电子邮件
问题描述
您好,我有一个集成流程,它逐行拆分文件,将每一行转换为 POJO,然后通过 JDBC 出站网关将该 POJO 插入到数据库中。
一旦文件处理完成,我希望能够发送一封电子邮件。我目前在我的 jdbcOutboundGateway 之后发送到 smtpFlow 通道,但是这是在每次插入数据库后发送一封电子邮件。
这是我当前的流量 DSL
IntegrationFlow ftpFlow() {
return IntegrationFlows.from(
ftpSource(), spec -> spec.poller(Pollers.fixedDelay(5, TimeUnit.SECONDS)))
.split(splitFile())
.transform(this::transformToIndividualScore)
.handle(jdbcOutboundGateway(null))
.channel("smtpFlow")
.get();
在处理完所有文件后,如何让此流程仅发送一封电子邮件jdbcOutboundGateway
?
这是我的splitFile()
方法
@Bean
FileSplitter splitFile() {
FileSplitter fs = new FileSplitter(true, false);
fs.setFirstLineAsHeader("IndividualScore");
return fs;
这是我的transformToIndividualScore
方法
@Transformer
private IndividualScore transformToIndividualScore(String payload) {
String[] values = payload.split(",");
IndividualScore is = new IndividualScore();
is.setScorecardDate(values[0]);
is.setVnSpId(values[1]);
is.setPrimaryCat(values[2]);
is.setSecondaryCat(values[3]);
is.setScore(Integer.parseInt(values[4]));
is.setActual(values[5]);
return is;
}
解决方案
在句柄之后添加.aggregate()
以将拆分的结果组合回单个消息。
推荐阅读
- swift - SwiftUI View 文本字段未绑定到 ViewModel 属性
- azure-active-directory - 尝试使用 MSAL 在 SPO 中对用户进行身份验证时出现 401 未经授权的错误
- jquery - .attr () 方法是否添加或更改数据索引?
- python - Python NLTK ResolutionProver 在实际上没有解决方案时找到了解决方案
- python - 熊猫与平均值的百分比差异
- python - 第一次按键和第二次和第三次按键的区别?
- sql - 如何编写组合多个表的Oracle Sql Query
- angular - 全局打字稿变量在订阅中分配后未更新
- react-native - TypeError:无法读取未定义的属性“导航”
- google-maps-api-3 - Google Maps Javascript API - places.AutocompleteService - getPlacePredictions 在满足某些条件时返回错误的距离米