# Spring Boot Example with POJO Routing

= Introduction

This example demonstrates how you can use POJO Royting with Camel's `@Consume` and `@Produce` annotations
on your Java beans. The example will generate a series of random numbers that is routed to either a low
or high method call. The method then constructs a new message that is routed to another POJO that is
hidden by an interface.

== Build

You can build this example using:

    $ mvn package

== Run

You can run this example using:

    $ mvn spring-boot:run

And you should see output in the console with high and low numbers. The example will self stop after one minute.

== Help

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

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

The Camel riders!
