当我使用带有迭代器的split()时,有没有办法使用ReleaseStrategy或模拟它?
@Bean
IntegrationFlow flow(CourseRepository courseRepository, EnrollmentRepository enrollmentRepository) {
return IntegrationFlows.from(courseRepository, "findAllWithEnrollmentToProcess", c -> c
.poller(Pollers.fixedDelay(this.executionIntervalInSeconds, SECONDS)))
.split()
.transform(Course::getId)
.transform(enrollmentRepository::findUnprocessedEnrollments)
.split()
.handle(...)
// do something when split ends
.get();
}
两个方法findAllWithEnrollmentToProcess和findUnprocessedEnrollments返回迭代器。
答案 0 :(得分:0)
您只能使用.aggregate()
来实现这一目标。在你的情况下两次。
我们在XML配置中有一个类似的示例:
<splitter id="upstream-splitter" input-channel="splitter" output-channel="upstream-splits" />
<splitter id="downstream-splitter" input-channel="upstream-splits" output-channel="downstream-splits" />
<aggregator id="first-aggregator" input-channel="downstream-splits" output-channel="pre-output" />
<aggregator id="second-aggregator" input-channel="pre-output" />
但这对于Java DSL配置来说完全相同。
虽然你的问题是你必须为你的用例找出合适的ReleaseStrategy
,因为你可能不知道你的迭代器的大小。