如果所有项目的 pubDate 相同,Mule 的 rss:feed-splitter 组件即使提要包含多个项目也仅返回单个项目。
在这种情况下,有什么办法可以拿到所有的物品吗?
您面临的问题是由于FeedSplitter
默认情况下依赖于EntryLastUpdatedFilter
接受或拒绝提要条目。此过滤器基于更新时间,因此任何与已处理的另一个条目具有相同时间的条目都将被拒绝。
我还没有找到任何干净的方法来配置<rss:feed-splitter>
元素以接受所有 RSS 条目,因此我必须将其实例化为自定义过滤器才能对其进行配置,如下所示:
<custom-splitter class="org.mule.module.rss.routing.FeedSplitter">
<spring:property name="entryFilter">
<spring:bean class="org.mule.routing.filters.AcceptAllFilter" />
</spring:property>
</custom-splitter>
这让所有 RSS 条目都经过拆分过程。
根据rss 模块文档rss:feed-splitter
将提要的条目拆分为单个条目对象。每个条目将是 Mule 中的一条单独消息。
所以你正在经历的是预期的行为。
您可以做的是编写一个自定义聚合器,该聚合器基于 pubDate 进行聚合,以便传播到下一个消息处理器的消息将是一个 mule 消息集合,其中包含具有相同 pubDate 的所有消息