# Camel Example Spring Boot and ActiveMQ

This example shows how to work with a simple Apache Camel application using Spring Boot and Apache ActiveMQ.

## Preparing ActiveMQ brokers

From Apache ActiveMQ you can download the broker as a .zip or .tar.gz file.

Unzip/tar the archive, and start a terminal.

Change directory to the unzipped directory and start the broker.

    bin/activemq console

Which runs the broker in the foreground and logs to the console.

## How to run the example

You can run this example using

    mvn spring-boot:run

## Using Camel components

Apache Camel provides 200+ components which you can use to integrate and route messages between many systems
and data formats. To use any of these Camel components, add the component as a dependency to your project.

## More information

You can find more information about Apache Camel at the website: http://camel.apache.org/
