Este conteúdo não está disponível no idioma selecionado.
Chapter 24. CouchDB
Camel CouchDB component Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
Available as of Camel 2.11
The couchdb: component allows you to treat 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 or update documents 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:
URI format Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
couchdb:http://hostname[:port]/database?[options]
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 Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
| Property | Default | Description |
|---|---|---|
deletes
|
true
|
document deletes are published as events |
updates
|
true
|
document inserts/updates are published as events |
heartbeat
|
30000
|
how often to send an empty message to keep socket alive in millis |
createDatabase
|
true
|
create the database if it does not already exist |
username
|
null
|
username in case of authenticated databases |
password
|
null
|
password for authenticated databases |
Headers Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
The following headers are set on exchanges during message transport.
| 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 Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
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 Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
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:
from("couchdb:http://localhost:9999").process(someProcessor);
from("couchdb:http://localhost:9999").process(someProcessor);
If you were only interested in deletes, then you could use the following
from("couchdb:http://localhost:9999?updates=false").process(someProcessor);
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
from("someProducingEndpoint").process(someProcessor).to("couchdb:http://localhost:9999")
from("someProducingEndpoint").process(someProcessor).to("couchdb:http://localhost:9999")