Karaf Support
Apache Camel is designed to work nicely into inside Apache Karaf OSGi container.
...
- Camel features descriptor allowing to easily and quickly install Camel in Karaf.
- Karaf commands allowing you to view, start, stop, get info, about the Camel contexts and routes running in the Karaf instance.
NB: Karaf commands are available starting with Camel 2.8.0, and the commands was renamed in Camel 2.9.0.
Here are the versions that are compatible.
...
Camel Version
...
Karaf Version
...
2.2.0
...
1.2.0
...
2.3.0
...
1.3.0
...
2.4.0
...
1.4.0
...
2.5.0
...
2.1.0
...
2.7.0
...
2.2.0
...
- .
...
...
2.2.2
...
2.8.2
...
2.2.4
...
2.9.0
...
2.2.5
...
2.10.0
...
2.2.8
Preparing Karaf for Camel
Camel uses several bundles to provide low level package, such as javax.annotation or javax.xml.bind.
Due to that, we mustn't use the default system package coming from the JDK. It means that we need to "exclude" some packages from system packages in order to use packages provided by tiers bundles.
Camel provides a ready to use config.properties file that you can download:
This file has to be copied into Karaf etc folder.
...
title | Karaf 2.2.5 or newer |
---|
...
It is recommended to use at least Apache Karaf 4.x with current Camel versions.
Install Camel in Karaf
Assuming that you have a running Karaf instance, you can register the Camel features descriptor:
Code Block |
---|
karaf@root> features:addurl mvn:org.apache.camel.karaf/apache-camel/2.8.2/xml/features |
From Karaf 2.2.6 onwards this has been simplified as there is a new features:chooseurl
command that is pre-setup for Camel
Code Block |
---|
karaf@root> features:chooseurl feature:repo-add camel 2.918.14 |
Now, we have all Camel features available:
Code Block |
---|
karaf@root> features:list|grep -i camel [uninstalled] [2.8.0 ] camel repo-0 [uninstalled] [2.8.0 ] camel-core repo-0 [uninstalled] [2.8.0 ] camel-spring repo-0 [uninstalled] [2.8.0 ] camel-blueprint repo-0 [uninstalled] [2.8.0 ] camel-test repo-0 [uninstalled] [2.8.0 ] camel-cxf repo-0 [uninstalled] [2.8.0 ] camel-cache repo-0 [uninstalled] [2.8.0 ] camel-castor repo-0 [uninstalled] [2.8.0 ] camel-crypto repo-0 [uninstalled] [2.8.0 ] camel-http repo-0 [uninstalled] [2.8.0 ] camel-http4 repo-0 [uninstalled] [2.8.0 ] camel-mina repo-0 [uninstalled] [2.8.0 ] camel-jetty repo-0 [uninstalled] [2.8.0 ] camel-servlet repo-0 [uninstalled] [2.8.0 ] camel-jms repo-0 ... |
To install Camel, just install the camel feature:It is a good start to at least install camel-blueprint
Code Block |
---|
karaf@root> features:install camel-blueprint |
You have to install the Camel features depending of your requirements.
For instance, if you want to use blueprint as Camel DSL, you have to install the camel-blueprint feature:
Code Block |
---|
karaf@root> features:install camel-blueprint
|
If, if your route, you use an endpoint like "stream:out", you have to install might need other features depending on what components you use in your routes. So for example if you use stream:out then you need the camel-stream feature:.
Code Block |
---|
karaf@root> features:install camel-stream
|
Karaf commands
When you install the camel feature, new Karaf commands become available automatically.
Karaf commands in Camel 2.8.x
Command | Description |
---|---|
camel:list-contexts | Lists the camel contexts available in the current Karaf instance |
camel:list-routes | Displays the list of Camel routes available in the current Karaf instance |
camel:info-context | Displays detail information about a given Camel context |
camel:start-context | Starts the given Camel context |
camel:stop-context | Stops the given Camel context |
camel:info-route | Provides detail information about a Camel route |
camel:show-route | Renders the route in XML |
camel:start-route | Starts the given route. |
camel:stop-route | Stops the given route. |
Karaf commands in Camel 2.9 onwards
The camel commands below help managing your integrations. In many cases the commands support tab completion for context and route names.
Command | Description |
---|---|
camel:context-list | Lists the camel contexts available in the current Karaf instance |
camel:context-info | Displays detail information about a given Camel context |
camel:context-start | Starts the given Camel context |
camel:context-stop | Stops the given Camel context (it becomes unavailable and it can't be started afterwards) |
camel:route-list | Displays the list of Camel routes available in the current Karaf instance |
camel:route-info | Provides detail information about a Camel route |
camel:route-show | Renders the route in XML |
camel:route-start | Starts the given route. From Camel 2.10 onwards you can use * as wildcard to match multiple routes. |
camel:route-stop | Stops the given route. From Camel 2.10 onwards you can use * as wildcard to match multiple routes. |
camel:route-suspend | Suspends the given route. From Camel 2.10 onwards you can use * as wildcard to match multiple routes. |
camel:route-resume | Resumes the given route. From Camel 2.10 onwards you can use * as wildcard to match multiple routes. |
Karaf commands in Camel 2.10 onwards
Description | |
---|---|
camel:endpoint-list | Lists endpoints fromm all camel contexts available in the current Karaf instance |
camel: |
...
route-profile | To profile route(s) |
camel:route-reset-stats | To reset performance stats on the given route(s) |
camel:context-suspend | Suspends the given Camel context |
camel:context-resume | Resumes the given Camel context |
camel:route-list
Code Block |
---|
karaf@root> camel:route-list |
The *camel:list-contexts* command displays the list of CamelContext available in the current Karaf instance:
Code Block |
---|
karaf@root> camel:list-contexts
Name Status Uptime
[66-camel-3 ] [Started ] [14.559 seconds ]
|
It displays the context name/ID (used in others commands), the current status (started/stopped), the uptime (since when the context has been started).
camel:list-routes
The *camel:list-routes* command displays the list of Camel routes available in the current Karaf instance:
Code Block |
---|
karaf@root> camel:list-routes
[route1 ]
|
You can also filter the routes by CamelContext:
Code Block |
---|
karaf@root> camel:route-list-routes 66-camel-3 [route1 ] |
Tip: use the TAB key to completion on the CamelContext ID.
camel:context-info
...
Displays detailed The *camel:info-context* command displays detail information about a given CamelContext:
add the *--verbose* option (following the context name) to also list the endpoints
Code Block |
---|
karaf@root> camel:context-info-context 66-camel-3 Camel Context 66-camel-3 Name: 66-camel-3 Version: 2.8.0 Status: Started Uptime: 1 minute Advanced Auto Startup: true Starting Routes: false Suspended: false Tracing: false Properties Components timer properties log Endpoints timer://test log://test Routes route1 Used Languages |
...
Tip: use TAB key for completion on the CamelContext name.
camel:
...
route-
...
info
The *camel:start-context* command starts a given CamelContext:
Code Block |
---|
karaf@root> camel:start-context 66-camel-3
|
Tip: use TAB key for completion on the CamelContext name.
camel:stop-context
The *camel:stop-context* command stops a given CamelContext:
Code Block |
---|
karaf@root> karaf@root> camel:stop-context 66-camel-3
|
Tip: use TAB key for completion on the CamelContext name.
camel:info-route
The *camel:info-routeroute-info* command provides detail information about a Camel route:
Code Block |
---|
karaf@root> camel:route-info-route route1 Camel Route route1 Camel Context: 66-camel-3 Properties id = route1 parent = 2e7aacc1 Statistics Exchanges Total: 98 Exchanges Completed: 98 Exchanges Failed: 0 Min Processing Time: 1ms Max Processing Time: 2ms Mean Processing Time: 1ms Total Processing Time: 134ms Last Processing Time: 1ms First Exchange Date: 2011-06-29 07:21:57 Last Exchange Completed Date: 2011-06-29 07:23:34 Definition <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <route id="route1" xmlns="http://camel.apache.org/schema/spring"> <from uri="timer:test"/> <to uri="log:test" id="to1"/> </route> |
...
Tip: use TAB key for completion on the route name.
camel:route-show
...
The *camel:route-show-route* command renders the route in XML. It's independent from the DSL used to define the route:
Code Block |
---|
karaf@root> camel:route-show-route route1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <route id="route1" xmlns="http://camel.apache.org/schema/spring"> <from uri="timer:test"/> <to uri="log:test" id="to1"/> </route> |
Tip: use TAB key for completion on the route name.
camel:
...
route
...
-suspend
The *camel:start-route* command starts a Camel route:
Code Block |
---|
karaf@root> camel:start-route route1
|
Tip: use TAB key for completion on the route name.
camel:stop-route
The *camel:stop-route* command stops a Camel route:
Code Block |
---|
karaf@root> camel:stop-route route1
|
Camel 2.9 or newer:
The *
camel:route-suspend
...
The * camel:start-route* command suspends a Camel route:
Code Block |
---|
karaf@root> camel:route-suspend route1
|
Tip: use TAB key for completion on the route name.
camel:route-resume
...
The *camel:route-resume* command resume a Camel route:
Code Block |
---|
karaf@root> camel:route-resume route1
|
Tip: use TAB key for completion on the route name.
Camel 2.10 or newer:
camel:endpoint-list
The *camel:endpoint-list* command displays the list of the endpoints available in all camel contexts of the current Karaf instance:
Code Block |
---|
karaf@root> camel:endpoint-list
camel-id uri Status
[test ] [timer://test ] [Started ]
[test ] [direct://A ] [Started ]
|
It displays the context name/ID (used in others commands), the URI of the endpoint and the current status (started/stopped).