如何在 spring 集成提要中删除具有多个 RSS 提要源的重复消息

How to remove duplicate messages with multiple rss feed sources in spring integration feed

如何在 spring 集成提要中删除具有多个 rss 提要源的重复消息,如 FeedEntryMessageSource 与共享 MetadataStore 所做的那样。

我在 https://github.com/okihouse/spring-integration-rss-multiple-urls 中遵循了这个例子,对于多个 url,现在我想从每个来源中删除重复的消息。我怎样才能做到这一点?

我认为你应该看一下 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) {
    ...
}