Cameleer

Atom component

The atom component polls an Atom feed and emits each new entry as an exchange whose body is the entry.

Scheme: atom: · Crate: cameleer-saas · Cargo feature: saas · Consumer: yes · Producer: no · Apache Camel: Atom

atom shares its implementation with rss and parses Atom 1.0, RSS 2.0 and RSS 1.0. The difference: with splitEntries=true the body is the entry map itself (${body[title]}), not a feed holding one entry.

When to use it

  • Watch GitHub release feeds (https://github.com/<owner>/<repo>/releases.atom) and start an upgrade check or notify a team.
  • Follow blogs and changelogs that publish Atom.
  • Feed new entries to an AI agent for summaries or tagging.

URI format

text
atom:feedUrl[?options]

Example

Check a project's release feed every hour and queue each new release.

yaml example: atom-release-watch
- route:
    id: release-watch
    from:
      uri: "atom:{{env:RELEASES_FEED:https://github.com/apache/camel/releases.atom}}?delay=3600000&throttleEntries=false"
      steps:
        - setBody:
            simple: "new release ${body[title]}: ${body[link]}"
        - to: seda:releases
- route:
    id: notify-release
    from:
      uri: seda:releases
      steps:
        - log: "${body}"

Rust DSL

rust
fn release_watch_routes(b: &mut RouteBuilder, feed_url: &str) {
    b.from(&format!("atom:{}?delay=3600000&throttleEntries=false", feed_url))
        .route_id("release-watch")
        .set_body(simple("new release ${body[title]}: ${body[link]}"))
        .to("seda:releases");
    b.from("seda:releases").route_id("notify-release").log("${body}");
}

Options

The same as rss: splitEntries, filter, lastUpdate, sortEntries, throttleEntries, feedHeader, and the scheduler options (delay 60000 ms). Unknown options are added to the feed URL's query.

Message headers

headerdirectiondescription
CamelAtomFeedoutThe whole feed (with feedHeader=true).

Entry map: title, link, uri (the Atom id), description (summary), contents, author, publishedDate, updatedDate, categories.

Run it with Docker

sh
docker run --rm -e RELEASES_FEED=https://github.com/apache/kafka/releases.atom \
  -v "$PWD:/routes:ro" pmsudhi/cameleer run /routes/release-watch.camel.yaml

Common questions

Why do I only get one entry per poll?

throttleEntries defaults to true, as in Apache Camel. Set it to false to get all new entries at once.

How do I skip old entries on the first poll?

Set lastUpdate=2026-11-01T00:00:00; only newer entries are delivered.

Found a problem?

If something on this page doesn't match what Cameleer does, or you hit a bug while building with it, please help fix it, whether you are a person or a coding agent: open an issue that describes what you saw, then fork the repository, fix it, add or update a test, run cargo test --workspace, and open a pull request. CONTRIBUTING.md explains the ground rules.

Edit this page on GitHub