Overview of the ServiceMix 2.x RSS Binding Example
The following procedure describes how to run the RSS Binding example in ServiceMix and provides details regarding what the RSS Binding does. For information on the business use case, please refer to: Use Case for RSS Binding.
The RSS Binding example illustrates:
- use of declarative programming
- how to perform an RSS binding in ServiceMix
The source code for the RSS Binding example is located in the ServiceMix installation directory under the examples\rss-binding directory in the servicemix.xml file. It is recommended that you refer to the source code while reading this document.
This example shows how to monitor RSS feeds for changes. The main component of this example periodically polls a list of RSS news feeds and when an update is found the new RSS items are displayed on the console.
Running the RSS Binding Example
| On a slow news day, you may have wait a while to see any output! |
- From a command shell, go to the RSS Binding example directory:
cd [servicemix_install_dir]\examples\rss-binding
where servicemix_install_dir is the directory in which ServiceMix was installed originally.
- Then type:
[servicemix_install_dir]\bin\servicemix servicemix.xml
| Handy Hint
Add $SERVICEMIX_HOME/bin directory to $PATH variable to simplify execution of the examples. |
Stopping the RSS Binding Example
To terminate the RSS Binding example, type "CTRL-C" in the command shell in which it is running and answer "y" to the "Terminate batch job (y/n)?" question.
How it Works
The diagram below illustrates the flow of messages through the RSS Binding components:
Messages flow through the components as follows:
- The rss component, which is implemented by RssPollingComponent class, uses customEditorConfigurer bean to parse the Date variable lastPolledDate into the specified format (yyyy/MMM/dd). lastPolledDate will be used to determine the new items added on the RSS feed.
- The rss component periodically polls RSS feeds defined on its urlStrings property for changes. In this case rss component monitors the following RSS feeds: http://rss.cnn.com/rss/cnn_topstories.rss and http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss.xml.
- When an update is found, the rss component creates a normalized message that contains the new items. It then sends the normalized message to the NMR. The NMR routes the message to the trace component.
- The trace component displays the RSS news items on the console.
Output from running [servicemix_install_dir]\bin\servicemix servicemix.xml looks like the following:
<item>
<title>Bush supporters' cars allegedly defaced by war veteran</title>
<link>http:tion=cnn_topstories</link>
<description>Read full story for latest details.</description>
<pubDate>Sat, 17 Dec 2005 00:52:01 GMT</pubDate>
<guid isPermaLink="false">http:sm.ap/index.html?section=cnn_topstories</guid>
</item>
<item>
<title>Stern says goodbye to terrestrial radio</title>
<link>http:l?section=cnn_topstories</link>
<description>Read full story for latest details.</description>
<pubDate>Sat, 17 Dec 2005 02:13:07 GMT</pubDate>
<guid isPermaLink="false">http:ast.day.ap/index.html?section=cnn_topstories</guid>
</item>
Details
The following table provides more details about the function of each component and bean in the servicemix.xml file:
Component or Bean ID |
Description |
rss |
This component polls RSS feeds for changes and is implemented by RssPollingComponent class. The property urlStrings defines the RSS feeds to be monitored. When one of the RSS feeds being monitored is updated, this component will convert the content of the RSS feed into a normalized message and send it to a trace component via Normalized Message Router (NMR). |
trace |
This component accepts a normalized message and display its content to the console. |
customEditorConfigurer |
This bean allows convenient registration of custom property editors that can modify application context's bean definitions. It uses CustomDateEditor, a propertyEditor for java.util.Date to reformat date variable lastPolledDate. |
Related Documentation
For more information on the following topics please see:
We support working with RSS and Atom via the Rome library. We support both the polling of existing RSS feeds to generate JBI messages (the example documented above) and the generation of RSS feeds from JBI messages. To see an example of how to generate RSS feeds from JBI messages go here.
For a brief explanation of the XML tags in the servicemi.xml file, please see: