9.2.2 过滤器

过滤器可以放置在集成管道的中间,以允许或不允许消息进入流中的下一个步骤。

例如,假设包含整数值的消息通过名为 numberChannel 的通道发布,但是只希望偶数传递到名为 evenNumberChannel 的通道。在这种情况下,可以使用 @Filter 注解声明一个过滤器,如下所示:

@Bean
public IntegrationFlow evenNumberFlow(AtomicInteger integerSource) {
    return IntegrationFlows
        ...
        .<Integer>filter((p) -> p % 2 == 0)
        ...
        .get();
}

在本例中,使用 lambda 表达式实现过滤器。但是,事实上,filter() 方法是接收一个 GenericSelector 作为参数。这意味着可以实现 GenericSelector 接口,而不是引入一个简略的 lambda 表达式实现过滤。

最后更新于