ReleaseStrategy用于迭代器

时间:2016-05-25 14:51:37

标签: spring-integration

当我使用带有迭代器的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返回迭代器。

1 个答案:

答案 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,因为你可能不知道你的迭代器的大小。