Karaf Support

Apache Camel is designed to work nicely into Apache Karaf OSGi container.

It includes:

  • 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.7.2 2.2.2
2.8.2 2.2.4

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:

http://svn.apache.org/repos/asf/camel/tags/camel-2.7.2/platforms/karaf/features/src/main/resources/config.properties

This file has to be copied into Karaf etc folder.

Install Camel in Karaf

Assuming that you have a running Karaf instance, you can register the Camel features descriptor:

karaf@root> features:addurl mvn:org.apache.camel.karaf/apache-camel/2.8.2/xml/features

Now, we have all Camel features available:

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:

karaf@root> features:install camel

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:

karaf@root> features:install camel-blueprint

If, if your route, you use an endpoint like "stream:out", you have to install the camel-stream feature:

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

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
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.
camel:route-stop Stops the given route.
camel:route-suspend Suspends the given route.
camel:route-resume Resumes the given route.

camel:list-contexts

The *camel:list-contexts* command displays the list of CamelContext available in the current Karaf instance:

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:

karaf@root> camel:list-routes
[route1              ]

You can also filter the routes by CamelContext:

karaf@root> camel:list-routes 66-camel-3
[route1              ]

Tip: use the TAB key to completion on the CamelContext ID.

camel:info-context

The *camel:info-context* command displays detail information about a given CamelContext:

karaf@root> camel: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

You can see the current Camel version used by the CamelContext, some context attributes, the components involved in the context, and the endpoints defined.

Tip: use TAB key for completion on the CamelContext name.

camel:start-context

The *camel:start-context* command starts a given CamelContext:

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:

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* command provides detail information about a Camel route:

karaf@root> camel: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>

You can see some statistics (the number of processed exchanges, the processing time, etc) and a XML rendering of your route (whatever DSL used to define the route).

Tip: use TAB key for completion on the route name.

camel:show-route

The *camel:show-route* command renders the route in XML. It's independent from the DSL used to define the route:

karaf@root> camel: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:start-route

The *camel:start-route* command starts a Camel route:

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:

karaf@root> camel:stop-route route1

Camel 2.9 or newer:

camel:route-suspend

The *camel:start-route* command suspends a Camel route:

karaf@root> camel:route-suspend route1

Tip: use TAB key for completion on the route name.

camel:resume-route

The *camel:route-resume* command resume a Camel route:

karaf@root> camel:route-resume route1

Tip: use TAB key for completion on the route name.

© 2004-2011 The Apache Software Foundation.
Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Graphic Design By Hiram