[[couchdb-component]]
= CouchDB Component
:page-source: components/camel-couchdb/src/main/docs/couchdb-component.adoc

*Available as of Camel version 2.11*

The *couchdb:* component allows you to treat
http://couchdb.apache.org/[CouchDB] instances as a producer or consumer
of messages. Using the lightweight LightCouch API, this camel component
has the following features:

* As a consumer, monitors couch changesets for inserts, updates and
deletes and publishes these as messages into camel routes.
* As a producer, can save, update, delete (by using CouchDbMethod with DELETE value)
documents and get documents by id (by using CouchDbMethod with GET value) into couch.
* Can support as many endpoints as required, eg for multiple databases
across multiple instances.
* Ability to have events trigger for only deletes, only inserts/updates
or all (default).
* Headers set for sequenceId, document revision, document id, and HTTP
method type.

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

[source,xml]
------------------------------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-couchdb</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------

== URI format

[source,java]
-------------------------------------------------
couchdb:http://hostname[:port]/database?[options]
-------------------------------------------------

Where *hostname* is the hostname of the running couchdb instance. Port
is optional and if not specified then defaults to 5984.

== Options

// component options: START
The CouchDB component supports 1 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
|===
// component options: END

// endpoint options: START
The CouchDB endpoint is configured using URI syntax:

----
couchdb:protocol:hostname:port/database
----

with the following path and query parameters:

=== Path Parameters (4 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *protocol* | *Required* The protocol to use for communicating with the database. |  | String
| *hostname* | *Required* Hostname of the running couchdb instance |  | String
| *port* | Port number for the running couchdb instance | 5984 | int
| *database* | *Required* Name of the database to use |  | String
|===


=== Query Parameters (14 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *createDatabase* (common) | Creates the database if it does not already exist | false | boolean
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *deletes* (consumer) | Document deletes are published as events | true | boolean
| *heartbeat* (consumer) | How often to send an empty message to keep socket alive in millis | 30000 | long
| *since* (consumer) | Start tracking changes immediately after the given update sequence. The default, null, will start monitoring from the latest sequence. |  | String
| *style* (consumer) | Specifies how many revisions are returned in the changes array. The default, main_only, will only return the current winning revision; all_docs will return all leaf revisions (including conflicts and deleted former conflicts.) | main_only | String
| *updates* (consumer) | Document inserts/updates are published as events | true | boolean
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
| *password* (security) | Password for authenticated databases |  | String
| *username* (security) | Username in case of authenticated databases |  | String
|===
// endpoint options: END
// spring-boot-auto-configure options: START
== Spring Boot Auto-Configuration

When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-couchdb-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 2 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.couchdb.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.couchdb.enabled* | Enable couchdb component | true | Boolean
|===
// spring-boot-auto-configure options: END


== Headers

The following headers are set on exchanges during message transport.

[width="100%",cols="20%,80%",options="header",]
|=======================================================================
|Property |Value

|`CouchDbDatabase` |the database the message came from

|`CouchDbSeq` |the couchdb changeset sequence number of the update / delete message

|`CouchDbId` |the couchdb document id

|`CouchDbRev` |the couchdb document revision

|`CouchDbMethod` |the method (delete / update)
|=======================================================================

Headers are set by the consumer once the message is received. The
producer will also set the headers for downstream processors once the
insert/update has taken place. Any headers set prior to the producer are
ignored. That means for example, if you set CouchDbId as a header, it
will not be used as the id for insertion, the id of the document will
still be used.

== Message Body

The component will use the message body as the document to be inserted.
If the body is an instance of String, then it will be marshalled into a
GSON object before insert. This means that the string must be valid JSON
or the insert / update will fail. If the body is an instance of a
com.google.gson.JsonElement then it will be inserted as is. Otherwise
the producer will throw an exception of unsupported body type.

== Samples

For example if you wish to consume all inserts, updates and deletes from
a CouchDB instance running locally, on port 9999 then you could use the
following:

[source,java]
-------------------------------------------------------------
from("couchdb:http://localhost:9999").process(someProcessor);
-------------------------------------------------------------

If you were only interested in deletes, then you could use the following

[source,java]
---------------------------------------------------------------------------
from("couchdb:http://localhost:9999?updates=false").process(someProcessor);
---------------------------------------------------------------------------

If you wanted to insert a message as a document, then the body of the
exchange is used

[source,java]
----------------------------------------------------------------------------------------
from("someProducingEndpoint").process(someProcessor).to("couchdb:http://localhost:9999")
----------------------------------------------------------------------------------------
