无论如何,有没有要调整Feed Adapter以根据事件进行操作?

问题描述

场景:-假设有一个消息通道正在接收来自任何流的消息,并且如果该通道接收到任何消息,那么Feed适配器应该拉动Feed(一次)并将这些Feed发布到其他通道。之后,该Feed适配器应停止运行。有没有可能实现这一目标?

解决方法

FeedEntryMessageSource基于:

Reader reader = this.feedUrl != null
                    ? new XmlReader(this.feedUrl)
                    : new XmlReader(this.feedResource.getInputStream());
            SyndFeed feed = this.syndFeedInput.build(reader);
来自com.rometools:rome库的

。因此,您可以以此构建一个自定义服务激活器,该事件将通过该事件在其输入通道上的消息激活。

为了更好地理解提要解析逻辑,我建议看一下FeedEntryMessageSource源代码:https://github.com/spring-projects/spring-integration/blob/master/spring-integration-feed/src/main/java/org/springframework/integration/feed/inbound/FeedEntryMessageSource.java

更新

好吧,另一种方法就是将FeedEntryMessageSource作为bean并从服务激活器中引用其receive()方法。这样,当消息到达该服务激活器的输入通道时,它将按需调用,而完全忽略消息内容。