Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the early version of the new website
https://camel.apache.org/staging/
We would very much like to receive any feedback on the new site, please join the discussion on the Camel user mailing list.

Etcd Component

Available since Camel 2.17.0

 

Etcd is a distributed key value store that provides a reliable way to store data across a cluster of machines

Maven users will need to add the following dependency to their pom.xml for this component.

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-etcd</artifactId>
    <!-- use the same version as your Camel core version -->
    <version>x.y.z</version>
</dependency>

URI format

etcd:namespace[/path][?options]

Where namespace represents the etcd context to which the etcd-component should operate and path is an optional attribute to define which node is being impacted. 

Supported namespaces are:

  • keys
  • watch
  • stats

Options

Name

Default Value

Description

uris

http://localhost:2379,http://localhost:4001

Defines the URIs the component should connect to.

sslContextParametersnullTo use a custom org.apache.camel.util.jsse.SSLContextParameters. See Using the JSSE Configuration Utility
userNamenullThe user name to use for basic authentication
passwordnullThe password to use for basic authentication
sendEmptyExchangeOnTimeoutfalseTo send an empty message in case of timeout watching for a key (consumer only)
recursivefalseTo apply an action recursively
timeToLivenullTo set the lifespan of a key in milliseconds
timeoutnullTo set the maximum time an action could take to complete.

Headers

NameTypeDescription
CamelEtcdActionjava.lang.StringThe action to perform, supported values are set, delete, deleteDir, get
CamelEtcdNamespacejava.lang.String

The etcd context an exchange was generated/processed from

CamelEtcdPathjava.lang.String

For keys namespace, it is used to determine the node subject the the action, if not set the path from URI endpoint is used. For stats and watch namespaces it contains the path of the node beign processed

CamelEtcdTimeoutjava.lang.LongTo set the maximum time an action could take to complete. If not present, the timeout option is taken into account
CamelEtcdTtljava.lang.IntegerTo set the lifespan of a key in milliseconds. If not present, the timeToLive option is taken into account
CamelEtcdRecursivejava.lang.Booleano apply an action recursively. If not present, the recursive option is taken into account

Keys namespace example:

 

CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
    public void configure() {
       from("direct:keys-set")
            .to("etcd:keys")
                .to("log:camel-etcd?level=INFO");
    }
});

Map<String, Object> headers = new HashMap<>();
headers.put(EtcdConstants.ETCD_ACTION, EtcdConstants.ETCD_KEYS_ACTION_SET);
headers.put(EtcdConstants.ETCD_PATH, "/camel/etcd/myKey");
 
ProducerTemplate template = context.createProducerTemplate();
template.sendBodyAndHeaders("direct:keys-set", "camel-etcd", headers); 

 

Stats namespace example:

 

CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
    public void configure() {
       from("etcd:stats/leader?consumer.delay=50&consumer.initialDelay=0")
           .to("log:etcd-leader-stats?level=INFO");
       from("etcd:stats/self?consumer.delay=50&consumer.initialDelay=0")
           .to("log:etcd-self-stats?level=INFO");
       from("etcd:stats/store?consumer.delay=50&consumer.initialDelay=0")
           .to("log:etcd-store-stats?level=INFO");
    }
}); 

 

Watch namespace example:

 

CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
    public void configure() {
       from("etcd:watch/recursive?recursive=true")
        .marshall().json()
        .to("log:etcd-event?level=INFO")
    }
});

 

 

 

 

 

© 2004-2015 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