Rackspace Open Sources Atom Hopper, An Atom Publishing Server

Atom Hopper is an open source Java Atom publishing server for accessing, processing and aggregating Atom entries. Rackspace designed Atom Hopper to make it easy to build both generalized and specialized persistence mechanisms for Atom XML data; it’s based on the Atom Syndication Format and the Atom Publishing Protocol. We’ve started from the Apache Abdera project and built a well-rounded Atom publishing server that is easily deployed on a Java servlet container such as Apache Tomcat 7.

Atom Hopper Within Rackspace

Within Rackspace, the Cloud Integration team builds tools for all our software development teams to use. We created Atom Hopper to collect and disperse information that is of interest to multiple audiences, delivering consistent information to everyone who is listening. For example, activity generated by the OpenStack Nova project is important to that team, but just as important to the teams responsible for Usage and Billing.

We use Atom Hopper to capture messages once and store them in a database; teams that want to read the messages can parse the data via an Atom feed according to their own schedules. Consumers can use whatever technology they wish to get the Atom feed produced by Atom Hopper. They can use Atom Hopper to select a specific entry within the feed or to page through the feed from newest entry to oldest or from oldest to newest—whatever suits their needs.

Atom Hopper 1.0

Atom Hopper 1.0 is available now as open source under the Apache License version 2.0, and we invite you to examine and contribute to our GitHub repository at https://github.com/rackerlabs/atom-hopper. Just as we’ve found Atom Hopper to be a valuable tool for groups to manage messages at Rackspace, we hope you’ll find many uses for it in your own environment.

To try Atom Hopper, install it on your own server and then configure it according to your preferences. Our wiki includes instructions and suggestions to help you with installation and configuration. By following the examples provided in our documentation, you can then use Atom Hopper to get feeds, select entries from within feeds, add entries to feeds and add categories to entries.

Pluggable Data Adapter: Choose Your Own Datastore

A key feature of Atom Hopper is its pluggable data adapter, which allows Atom Hopper to communicate with a user-configured back end datastore, including relational databases, NoSQL or other options. By default, Atom Hopper ships with a Hibernate data adapter. We’ve tested it with PostgreSQL, MySQL and H2 databases. With the Hibernate data adapter, you can configure Atom Hopper to allow each Atom feed to store and retrieve data from completely different database servers. For example, Atom Hopper can talk to PostgreSQL on one feed and MySQL on a different feed.

Scalability: Load Balancing Multiple Feeds On Multiple Datastores

Atom Hopper was designed to scale. Atom Hopper holds no state, so it’s able to scale horizontally very well. Inside Rackspace, we use a load balancer to balance several Atom Hopper instances that all share the same configured Atom feeds. With the possibility of multiple Atom Hopper instances managing multiple feeds on multiple datastores, you can create an Atom Hopper configuration to suit a wide range of workloads.

You can use Atom Hopper to turn a large collection of Atom feeds into narrowly-targeted information, usable for a specific purpose and free of entries irrelevant to that purpose.

Fork It

Atom Hopper is available as open source under the Apache License version 2.0; the source code is available on GitHub. Visit our project website at www.atomhopper.org for links to more information about Atom Hopper, including our wiki where we’ve posted the most current information about setting up and using Atom Hopper for your own projects.

Don’t forget to follow Atom Hopper on Twitter!


Rack Blogger is our catchall blog byline, subbed in when a Racker author moves on, or used when we publish a guest post. You can email Rack Blogger at blog@rackspace.com.


  1. I would like to know if Atom Hopper supports the DELETE function. If so, how does this work? I have tried to run a curl delete and have not had a positive result


Please enter your comment!
Please enter your name here