Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

RSS

...

Component

...

The

...

rss:

...

component

...

is

...

used

...

for

...

polling

...

RSS

...

feeds.

...

Camel

...

will

...

default

...

poll

...

the

...

feed

...

every

...

60th

...

seconds.

...

Maven

...

users

...

will

...

need

...

to

...

add

...

the

...

following

...

dependency

...

to

...

their

...

pom.xml

...

for

...

this

...

component:

Code Block
xml
xml

{code:xml}
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-rss</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
{code}

*

Note:

...

The

...

component

...

currently

...

only

...

supports

...

polling

...

(consuming)

...

feeds.

Note
{note}

Camel-rss

internally

uses

a

[

patched

version

|http://svn.apache.org/repos/asf/servicemix/smx4/bundles/trunk/rome-1.0/]

of

[

ROME

|http://rometools.org/]

hosted

on

ServiceMix

to

solve

some

OSGi

[

class

loading

issues.

URI format

Code Block
|https://issues.apache.org/jira/browse/SMX4-510].
{note}

h3. URI format

{code}
rss:rssUri
{code}

Where {{rssUri}} is the URI to the RSS feed to poll. 

You can append query options to the URI in the following format, {{

Where rssUri is the URI to the RSS feed to poll.

You can append query options to the URI in the following format, ?option=value&option=value&...

Options

Wiki Markup
}}

h3. Options
{div:class=confluenceTableSmall}
|| Property || Default || Description ||
| {{splitEntries}} | {{true}} | If {{true}}, Camel splits a feed into its individual entries and returns each entry, poll by poll. For example, if a feed contains seven entries, Camel returns the first entry on the first poll, the second entry on the second poll, and so on. When no more entries are left in the feed, Camel contacts the remote RSS URI to obtain a new feed. If {{false}}, Camel obtains a fresh feed on every poll and returns all of the feed's entries. |
| {{filter}} | {{true}} |  Use in combination with the {{splitEntries}} option in order to filter returned entries. By default, Camel applies the {{UpdateDateFilter}} filter, which returns only new entries from the feed, ensuring that the consumer endpoint never receives an entry more than once. The filter orders the entries chronologically, with the newest returned last. |
| {{throttleEntries}} | {{true}} | *Camel 2.5:* Sets whether all entries identified in a single feed poll should be delivered immediately. If true, only one entry is processed per consumer.delay. Only applicable when splitEntries is set to true. |
| {{lastUpdate}} | {{null}} | Use in combination with the {{filter}} option to block entries earlier than a specific date/time (uses the {{entry.updated}} timestamp). The format is: {{yyyy-MM-ddTHH:MM:ss}}. Example: {{2007-12-24T17:45:59}}. | 
| {{feedHeader}} | {{true}} | Specifies whether to add the ROME {{SyndFeed}} object as a header. |
| {{sortEntries}} | {{false}} | If {{splitEntries}} is {{true}}, this specifies whether to sort the entries by updated date. |
| {{consumer.delay}} | {{60000}} | Delay in milliseconds between each poll. |
| {{consumer.initialDelay}} | {{1000}} | Milliseconds before polling starts. |
| {{consumer.userFixedDelay}} | {{false}} | Set to {{true}} to use fixed delay between pools, otherwise fixed rate is used. See [ScheduledExecutorService|http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html] in JDK for details. |
{div}

h3. 

Exchange

...

data

...

types

...

Camel

...

initializes

...

the

...

In

...

body

...

on

...

the

...

Exchange

...

with

...

a

...

ROME

...

SyndFeed

...

.

...

Depending

...

on

...

the

...

value

...

of

...

the

...

splitEntries

...

flag,

...

Camel

...

returns

...

either

...

a

...

SyndFeed

...

with

...

one

...

SyndEntry

...

or

...

a

...

java.util.List

...

of

...

SyndEntrys.

Wiki Markup
}}.
{div:class=confluenceTableSmall}
|| Option || Value || Behavior ||
| {{splitEntries}} | {{true}} |  A single entry from the current feed is set in the exchange. |
| {{splitEntries}} | {{false}} | The entire list of entries from the current feed is set in the exchange. |
{div}

h3. 

Message Headers

Wiki Markup
 Headers
{div:class=confluenceTableSmall}
|| Header || Description ||
| {{CamelRssFeed}} | The entire {{SyncFeed}} object. |
{div}

h3. 

RSS

...

Dataformat

...

The

...

RSS

...

component

...

ships

...

with

...

an

...

RSS

...

dataformat

...

that

...

can

...

be

...

used

...

to

...

convert

...

between

...

String

...

(as

...

XML)

...

and

...

ROME

...

RSS

...

model

...

objects.

...

  • marshal

...

  • =

...

  • from

...

  • ROME

...

  • SyndFeed

...

  • to

...

  • XML String
  • unmarshal = from XML String to ROME SyndFeed

A route using this would look something like this:

Wiki Markup
 {{String}}
* unmarshal = from XML {{String}} to ROME {{SyndFeed}}

A route using this would look something like this:

{snippet:id=ex|lang=java|url=camel/trunk/components/camel-rss/src/test/java/org/apache/camel/dataformat/rss/RssDataFormatTest.java}

The

...

purpose

...

of

...

this

...

feature

...

is

...

to

...

make

...

it

...

possible

...

to

...

use

...

Camel's

...

lovely

...

built-in

...

expressions

...

for

...

manipulating

...

RSS

...

messages.

...

As

...

shown

...

below,

...

an

...

XPath

...

expression

...

can

...

be

...

used

...

to

...

filter

...

the

...

RSS

...

message:

Wiki Markup


{snippet:id=ex|lang=java|url=camel/trunk/components/camel-rss/src/test/java/org/apache/camel/dataformat/rss/RssFilterWithXPathTest.java}

{
:=
Tip
title
Query
parameters
}

If

the

URL

for

the

RSS

feed

uses

query

parameters,

this

component

will

understand

them

as

well,

for

example

if

the

feed

uses

{{

alt=rss

}}

,

then

you

can

for

example

do

{{


from("rss:http://someserver.com/feeds/posts/default?alt=rss&splitEntries=false&consumer.delay=1000").to("bean:rss");

Filtering entries

You can filter out entries quite easily using XPath, as shown in the data format section above. You can also exploit Camel's Bean Integration to implement your own conditions. For instance, a filter equivalent to the XPath example above would be:

Wiki Markup
}}
{tip}

h3. Filtering entries

You can filter out entries quite easily using XPath, as shown in the data format section above. You can also exploit Camel's [Bean Integration] to implement your own conditions. For instance, a filter equivalent to the XPath example above would be:

{snippet:id=ex1|lang=java|url=camel/trunk/components/camel-rss/src/test/java/org/apache/camel/component/rss/RssFilterTest.java}

The

...

custom

...

bean

...

for

...

this

...

would

...

be:

Wiki Markup


{snippet:id=ex2|lang=java|url=camel/trunk/components/camel-rss/src/test/java/org/apache/camel/component/rss/RssFilterTest.java}

{include:Endpoint See Also}
- [Atom]
Include Page
Endpoint See Also
Endpoint See Also