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.
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> featuresfeature:addurl mvn:org.apache.camel.karaf/apache-camel/2.8.0/xml/featuresrepo-add camel 2.18.4 |
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 |
---|
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.
camel:list-contexts
...
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. |
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 |
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-route* route-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:startroute-routesuspend* command starts suspends a Camel route:
Code Block |
---|
karaf@root> camel:startroute-routesuspend route1 |
Tip: use TAB key for completion on the route name.
camel:
...
route-
...
resume
The *camel:stoproute-routeresume* command stops resume a Camel route:
Code Block |
---|
karaf@root> camel:stoproute-routeresume route1 |
Tip: use TAB key for completion on the route name.
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).