diff --git a/docs/src/reference/docbook/feed.xml b/docs/src/reference/docbook/feed.xml index 4badba3890..17560d2503 100644 --- a/docs/src/reference/docbook/feed.xml +++ b/docs/src/reference/docbook/feed.xml @@ -8,25 +8,25 @@
Introduction - As we know Web syndication is a form of syndication where material such as news items, press releases that is - available to any website is also made available via we feeds such as RSS, ATOM etc. + Web syndication is a form of publishing material such as news stories, press releases, blog posts, and + other items typically available on a website but also made available in a feed format such as RSS or ATOM. - Spring integration provides support for Web Syndication via FEED adapter which comes with a convenient - namespace-based configuration. - To configure FEED namespace include the following elements into the headers of your XML configuration file: + Spring integration provides support for Web Syndication via its 'feed' adapter and provides convenient + namespace-based configuration for it. + To configure the 'feed' namespace, include the following elements within the headers of your XML configuration file: - +
Feed Inbound Channel Adapter - The only adapter that is really needed to provide support for retrieving feeds is an inbound channel adapter - which allows you to subscribe to a particular URL. Below is the configuration for such adapter: + The only adapter that is really needed to provide support for retrieving feeds is an inbound channel adapter. + This allows you to subscribe to a particular URL. Below is an example configuration: ]]> - In the above configuration we are subscribing to a URL identified by url attribute. + In the above configuration, we are subscribing to a URL identified by the url attribute. - As news items are retrieved they will be converted to a Message and sent to a channel identified by channel attribute. - The payload of such message will be com.sun.syndication.feed.synd.SyndEntry which encapsulates - various data (i.e., content, dates, authors etc.) about a news item. + As news items are retrieved they will be converted to Messages and sent to a channel identified by the channel attribute. + The payload of each message will be a com.sun.syndication.feed.synd.SyndEntry instance. That encapsulates + various data about a news item (content, dates, authors, etc.). - You can also see that Inbound Feed Channel Adapter is a Polling consumer which means you have to - provide a poller configuration. However, one important thing you must understand with regard to Feed sinc its inner-workings - are slightly different then any other poling consumer. When Inbound Feed adapter is started it does the first poll and - receives com.sun.syndication.feed.synd.SyndEntryyFeed which is an object that contains multiple - SyndEntry objects. Each entry is stored in the local entry queue and is released based on - the value in the max-messages-per-poll attribute where each Message will contain a single entry. - If during retrieval of the entries from the entry queue the queue had become empty the adapter will attempt to update - the Feed populating the queue with more entries (SyndEntry) if available, otherwise the next attempt to poll for a feed will - be determined by the trigger of the poller (e.g., every 10 seconds in the above configuration). + You can also see that the Inbound Feed Channel Adapter is a Polling Consumer. That means you have to + provide a poller configuration. However, one important thing you must understand with regard to Feeds is that its inner-workings + are slightly different then most other poling consumers. When an Inbound Feed adapter is started, it does the first poll and + receives a com.sun.syndication.feed.synd.SyndEntryFeed instance. That is an object that contains multiple + SyndEntry objects. Each entry is stored in the local entry queue and is released based on + the value in the max-messages-per-poll attribute such that each Message will contain a single entry. + If during retrieval of the entries from the entry queue the queue had become empty, the adapter will attempt to update + the Feed thereby populating the queue with more entries (SyndEntry instances) if available. Otherwise the next attempt to + poll for a feed will be determined by the trigger of the poller (e.g., every 10 seconds in the above configuration). Duplicate Entries - Polling for a Feed might result in the entries that have already been processed ("I already read that news item, why are you showing it to me again?"). + Polling for a Feed might result in entries that have already been processed + ("I already read that news item, why are you showing it to me again?"). Spring Integration provides a convenient mechanism to eliminate the need to worry about duplicate entries. - Each feed entry will have publish date field. Every time the new Message is generated and sent, - Spring Integration will store the value of the publish date in the instance of the - org.springframework.integration.store.MetadataStore which is a strategy interface designed to store various - types of meta-data (e.g., publish date of the last feed entry that has been processed) to help components such as Feed to deal with - duplicates. + Each feed entry will have a published date field. Every time a new Message is generated and sent, + Spring Integration will store the value of the latest published date in an instance of the + org.springframework.integration.store.MetadataStore strategy. The MetadataStore interface is + designed to store various types of generic meta-data (e.g., published date of the last feed entry that has been processed) + to help components such as this Feed adapter deal with duplicates. - - The default rule for locating this meta-data store is as follows; Spring Integration will look for a bean of type - org.springframework.integration.store.MetadataStore in the ApplicationContext. If one found then it will be used, - otherwise it will create a new instance of SimpleMetadataStore which is a simple in-memory implementation that - will only persist meta-data within the life-cycle of the application context. This means that upon restart you may end up with - duplicate entries. If you need to persist meta-data between Application Context restarts, you may use - PropertiesPersistingMetadataStore which is a property file based persister or provide your own - implementation of the MetedataStore interface (e.g.,JdbcMetadatStore) and configure it as bean in the Application Context. + + The default rule for locating this metadata store is as follows: Spring Integration will look for a bean of type + org.springframework.integration.store.MetadataStore in the ApplicationContext. If one is found then it will be used, + otherwise it will create a new instance of SimpleMetadataStore which is an in-memory implementation that + will only persist metadata within the lifecycle of the currently running Application Context. This means that upon restart you may + end up with duplicate entries. If you need to persist metadata between Application Context restarts, you may use the + PropertiesPersistingMetadataStore which is backed by a properties file and a properties-persister. + Alternatively, you could provide your own implementation of the MetadataStore interface + (e.g. JdbcMetadataStore) and configure it as bean in the Application Context. - ]]> + ]]>