# Camel Supervising Route Controller Example Spring Boot

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

## How to run

You can run this example using

    mvn spring-boot:run

Beside JMX you can use Spring Boot Endpoints to interact with the routes:

* To get info about the routes
+
[source]
----
curl -XGET -s http://localhost:8080/actuator/camelroutes
----
+
+* To get details about a route
++
+[source]
+----
+curl -XGET -s http://localhost:8080/actuator/camelroutes/{id}/detail
+----

* To get info about a route
+
[source]
----
curl -XGET -s http://localhost:8080/actuator/camelroutes/{id}/info
----

* To stop a route
+
[source]
----
curl -XPOST -H "Content-Type: application/json" -s http://localhost:8080/actuator/camelroutes/{id}/stop
----

* To start a route
+
[source]
----
curl -XPOST -H "Content-Type: application/json" -s http://localhost:8080/actuator/camelroutes/{id}/start
----


## More information

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