blob: fa401d3bf0f1ffab81078006e17cf9b5bd2415b7 [file] [log] [blame]
== Camel XML Example - CDI
=== Introduction
This example illustrates the use of Camel XML configuration files into
Camel CDI applications.
While CDI favors a typesafe dependency injection mechanism, it may be
useful to reuse existing Camel XML configuration files into a Camel CDI
application. In other use cases, it might be handy to rely on the Camel
XML DSL to configure its Camel context(s).
So that example demonstrates how to import a Camel XML configuration
file and the level of interoperability between the Camel XML DSL and
CDI.
It is implemented in Java with CDI dependency injection. It uses JBoss
Weld as the minimal CDI container to run the application, though you can
run the application in any CDI compliant container.
It is required to have the `+camel-core-xml+` dependency in the
classpath when importing Camel XML configuration files using Camel CDI.
The `+camel-cdi+` and `+camel-stream+` components are used in this
example. The `+camel-test-cdi+` module is used for the JUnit test
runner.
=== Build
You can build this example using:
[source,sh]
----
$ mvn package
----
=== Run
You can run this example using:
[source,sh]
----
$ mvn camel:run
----
When the Camel application runs, you should see the following messages
being logged to the console, e.g.:
....
2016-04-26 17:08:49,021 [cdi.Main.main()] INFO Version - WELD-000900: 2.3.4 (Final)
2016-04-26 17:08:51,805 [cdi.Main.main()] INFO CdiCamelExtension - Camel CDI is starting Camel context [cdi-camel-xml]
2016-04-26 17:08:51,806 [cdi.Main.main()] INFO DefaultCamelContext - Apache Camel 2.18.0 (CamelContext: cdi-camel-xml) is starting
2016-04-26 17:08:52,322 [cdi.Main.main()] INFO SedaEndpoint - Endpoint Endpoint[seda://rescue?multipleConsumers=true] is using shared queue: seda://rescue with size: 2147483647
2016-04-26 17:08:52,356 [cdi.Main.main()] INFO DefaultCamelContext - Route: terminal started and consuming from: Endpoint[stream://in?delay=1000&promptMessage=Which+pill+%28red%7Cblue%29%3F%3A+]
2016-04-26 17:08:52,360 [cdi.Main.main()] INFO DefaultCamelContext - Route: matrix started and consuming from: Endpoint[direct://neo]
2016-04-26 17:08:52,361 [cdi.Main.main()] INFO DefaultCamelContext - Route: unplug started and consuming from: Endpoint[direct://unplug]
2016-04-26 17:08:52,362 [cdi.Main.main()] INFO DefaultCamelContext - Total 3 routes, of which 3 are started.
2016-04-26 17:08:52,363 [cdi.Main.main()] INFO DefaultCamelContext - Apache Camel 2.18.0 (CamelContext: cdi-camel-xml) started in 0.556 seconds
2016-04-26 17:08:52,434 [cdi.Main.main()] INFO Bootstrap - WELD-ENV-002003: Weld SE container STATIC_INSTANCE initialized
████████╗██╗ ██╗███████╗ ███╗ ███╗ █████╗ ████████╗██████╗ ██╗██╗ ██╗
╚══██╔══╝██║ ██║██╔════╝ ████╗ ████║██╔══██╗╚══██╔══╝██╔══██╗██║╚██╗██╔╝
██║ ███████║█████╗ ██╔████╔██║███████║ ██║ ██████╔╝██║ ╚███╔╝
██║ ██╔══██║██╔══╝ ██║╚██╔╝██║██╔══██║ ██║ ██╔══██╗██║ ██╔██╗
██║ ██║ ██║███████╗ ██║ ╚═╝ ██║██║ ██║ ██║ ██║ ██║██║██╔╝ ██╗
╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝
Which pill (red|blue)?:
....
You're being prompted which pill Neo should be taking. If he chooses the
red one, Neo gets unplugged from the Matrix and the red pill serves as a
location device to track his position into the farm to broadcast it and
have the rebellion rescuing him, e.g.:
....
Which pill (red|blue)?: red
2016-04-26 17:12:07,520 [#1 - ControlBus] INFO DefaultShutdownStrategy - Starting to graceful shutdown 1 routes (timeout 300 seconds)
2016-04-26 17:12:07,521 [0 - stream://in] INFO unplug - Neo has been located in matrix
2016-04-26 17:12:07,523 [ - ShutdownTask] INFO DefaultShutdownStrategy - Route: terminal shutdown complete, was consuming from: Endpoint[stream://in?delay=1000&promptMessage=Which+pill+%28red%7Cblue%29%3F%3A+]
2016-04-26 17:12:07,524 [ - ShutdownTask] INFO DefaultShutdownStrategy - Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 300 seconds. Inflights per route: [terminal = 1]
2016-04-26 17:12:08,530 [#1 - ControlBus] INFO DefaultShutdownStrategy - Graceful shutdown of 1 routes completed in 1 seconds
__
_____ _ _| |
| | |___ ___| |_ _ ___ ___ ___ _| | |
| | | | . | | | | . | . | -_| . |__|
|_____|_|_| _|_|___|_ |_ |___|___|__|
|_| |___|___|
2016-04-26 17:12:08,532 [#1 - ControlBus] INFO DefaultCamelContext - Route: terminal is stopped, was consuming from: Endpoint[stream://in?delay=1000&promptMessage=Which+pill+%28red%7Cblue%29%3F%3A+]
2016-04-26 17:12:08,533 [#1 - ControlBus] INFO ControlBusProducer - ControlBus task done [stop route terminal] with result -> void
....
The Camel application can be stopped pressing ctrl+c in the shell:
....
2016-04-26 17:16:50,172 [Thread-5 ] INFO MainSupport$HangupInterceptor - Received hang up - stopping the main instance.
2016-04-26 17:16:50,179 [Thread-5 ] INFO CamelContextProducer - Camel CDI is stopping Camel context [cdi-camel-xml]
2016-04-26 17:16:50,180 [Thread-5 ] INFO DefaultCamelContext - Apache Camel 2.18.0 (CamelContext: cdi-camel-xml) is shutting down
2016-04-26 17:16:50,180 [Thread-5 ] INFO DefaultShutdownStrategy - Starting to graceful shutdown 3 routes (timeout 300 seconds)
2016-04-26 17:16:50,191 [ - ShutdownTask] INFO DefaultShutdownStrategy - Route: terminal shutdown complete, was consuming from: Endpoint[stream://in?delay=1000&promptMessage=Which+pill+%28red%7Cblue%29%3F%3A+]
2016-04-26 17:16:50,192 [ - ShutdownTask] INFO DefaultShutdownStrategy - Route: unplug shutdown complete, was consuming from: Endpoint[direct://unplug]
2016-04-26 17:16:50,192 [ - ShutdownTask] INFO DefaultShutdownStrategy - Route: matrix shutdown complete, was consuming from: Endpoint[direct://neo]
2016-04-26 17:16:50,192 [Thread-5 ] INFO DefaultShutdownStrategy - Graceful shutdown of 3 routes completed in 0 seconds
2016-04-26 17:16:50,236 [Thread-5 ] INFO MainLifecycleStrategy - CamelContext: cdi-camel-xml has been shutdown, triggering shutdown of the JVM.
2016-04-26 17:16:50,259 [Thread-5 ] INFO DefaultCamelContext - Apache Camel 2.18.0 (CamelContext: cdi-camel-xml) uptime 7 minutes
2016-04-26 17:16:50,259 [Thread-5 ] INFO DefaultCamelContext - Apache Camel 2.18.0 (CamelContext: cdi-camel-xml) is shutdown in 0.079 seconds
_____ _ _ _
| __| |_ _ _| |_ _| |___ _ _ _ ___
|__ | | | | _| . | . | | | | |_ _ _
|_____|_|_|___|_| |___|___|_____|_|_|_|_|_|
2016-04-26 17:16:50,275 [Thread-5 ] INFO Bootstrap - WELD-ENV-002001: Weld SE container STATIC_INSTANCE shut down
....
=== Help and contributions
If you hit any problem using Camel or have some feedback, then please
https://camel.apache.org/support.html[let us know].
We also love contributors, so
https://camel.apache.org/contributing.html[get involved] :-)
The Camel riders!