如何使用共享MetadataStore的FeedEntryMessageSource删除Spring集成Feed中包含多个RSS源的重复邮件。
对于https://github.com/okihouse/spring-integration-rss-multiple-urls我已经按照这个示例,对于多个网址,现在我想删除每个来源的重复邮件。我怎样才能做到这一点?
答案 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) {
...
}