Show Table of Contents
Chapter 42. Etcd
Etcd Component
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:
keyswatchstats
Options
|
Name
|
Default Value
|
Description
|
|---|---|---|
uris
|
Defines the URIs the component should connect to.
|
|
sslContextParameters
|
null
|
To use a custom org.apache.camel.util.jsse.SSLContextParameters. See Using the JSSE Configuration Utility
|
userName
|
null
|
The user name to use for basic authentication |
password
|
null
|
The password to use for basic authentication |
sendEmptyExchangeOnTimeout
|
false
|
To send an empty message in case of timeout watching for a key (consumer only) |
recursive
|
false
|
To apply an action recursively |
timeToLive
|
null
|
To set the lifespan of a key in milliseconds |
timeout
|
null
|
To set the maximum time an action could take to complete. |
Headers
| Name | Type | Description |
|---|---|---|
CamelEtcdAction
|
java.lang.String
|
The action to perform, supported values are set, delete, deleteDir, get |
CamelEtcdNamespace
|
java.lang.String
|
The etcd context an exchange was generated/processed from
|
CamelEtcdPath
|
java.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
|
CamelEtcdTimeout
|
java.lang.Long
|
To set the maximum time an action could take to complete. If not present, the timeout option is taken into account
|
CamelEtcdTtl
|
java.lang.Integer
|
To set the lifespan of a key in milliseconds. If not present, the timeToLive option is taken into account
|
CamelEtcdRecursive
|
java.lang.Boolean
|
To 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")
}
});
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.