RSS Support
This RSS module provides transformers, routers, and filters to simplify RSS feed manipulation and integration. ROME is the underlying RSS library used to implement Mule concepts. The ROME feed object structure is fairly straight forward and nicely supports the concept of a canonical data model when writing service components. The main goal of this project is to allow users wiring together RSS integration solutions through Mule's configuration, trying to avoid additional implementations as much as possible. An example use case could be to poll RSS feeds using the http transport, sending event messages across different transports using the FeedSplitter in combination with FeedFilter.
What is included?
The following implementations are available:
Transformers
org.mule.transformers.rss.XMLByteArrayToFeedObject
Transforms an XML byte array into a ROME feed object (com.sun.syndication.feed.synd.SyndFeed).
org.mule.transformers.rss.FeedObjectToXMLString
Transforms a ROME feed object (com.sun.syndication.feed.synd.SyndFeed) into an XML string.
Routers
org.mule.routing.outbound.rss.FeedSplitter
Splits an incoming RSS feed, typically containing multiple message items, into separate RSS feed message items. Router input must be a ROME feed object.
Filters
org.mule.routing.filters.rss.FeedFilter
This filter can be used in combination with the FeedSplitter. The following filter properties are available:
| Name |
Description |
Value |
| title |
This filter name is the equivalent to the RSS XML tag <title>. |
Regular expression. |
| name |
This filter name is the equivalent to the RSS XML tag <name>. |
Regular expression. |
| description |
This filter name is the equivalent to the RSS XML tag <description>. |
Regular expression. |
| author |
This filter name is the equivalent to the RSS XML tag <author>. |
Regular expression. |
| caseSensitive |
Controls case sensitivity for all name/value pairs on the particular filter. |
true (default) | false |
Examples
For a sample configuration go here.
TODO
The following is a list of features the current implementation would extremely benefit from:
- When feeds are polled through a transport, only process feeds that haven't been polled before.
 | This could probably be similar to the implementation of an IdempotentRouter, allowing to persist the last read publish date via property. |
- Support merging of multiple incoming feeds into a single feed.
 | Maybe there's even a way to configure this with the current implemenation? |