Welcome to the Apache Camel Examples!
=====================================

This directory contains the various examples for working with Apache
Camel. The examples can be run using Maven. When using the Maven
command, Maven will attempt to download the required dependencies from a
central repository to your local repository.
View the individual example READMEs for details.

They are described in detail here
  http://camel.apache.org/examples.html

Before you start we recommend you install a recent distribution of
Maven, which we use to run our examples
  http://maven.apache.org/

If you hit any problems please let us know on the Camel Forums
  http://camel.apache.org/discussion-forums.html

Please help us make Apache Camel better - we appreciate any feedback you
may have.

Enjoy!

------------------------
The Camel riders!
