如何在spring集成Feed中删除包含多个rss源的重复邮件

时间:2017-01-09 14:52:36

标签: spring spring-boot rss spring-integration

如何使用共享MetadataStore的FeedEntryMessageSource删除Spring集成Feed中包含多个RSS源的重复邮件。

对于https://github.com/okihouse/spring-integration-rss-multiple-urls我已经按照这个示例,对于多个网址,现在我想删除每个来源的重复邮件。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

我认为你应该看看Idempotent Receiver模式。

在分割所有List<SyndFeed>之后,您应该检查您之前是否还没有处理过这个条目。我的意思是splitter之后的下一个端点应标记为IdempotentReceiverInterceptor

修改

@Bean
@Splitter(inputChannel = "splitterChannel")
public MessageHandler splitter() {
    DefaultMessageSplitter defaultMessageSplitter = new DefaultMessageSplitter();
    defaultMessageSplitter.setOutputChannelName("serviceChannel");
    return defaultMessageSplitter;

}

@Bean
public IdempotentReceiverInterceptor idempotentReceiverInterceptor() {
   return new IdempotentReceiverInterceptor(new MetadataStoreSelector(...));
}


@ServiceActivator(inputChannel = "serviceChannel")
@IdempotentReceiver("idempotentReceiverInterceptor")
public void processFeed(SyndFeed feed) {
    ...
}