Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

Camel

...

CouchDB

...

component

...

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:

Code Block
xml
xml


{code: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>
{code}

h3. 

URI format

Code Block
URI format

{code}
couchdb:http://hostname[:port]/database?[options]
{code}

Where *hostname* is the hostname 

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

Options

Wiki Markup
of the running couchdb instance. Port is optional and if not specified then defaults to 5984.

h3. Options
{div:class=confluenceTableSmall}
|| 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 |
{div}

h3. Headers

The following headers are set on exchanges during message transport.

Headers

The following headers are set on exchanges during message transport.

Wiki Markup
{div:class=confluenceTableSmall}
|| 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) |
{div}

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:

Code Block


h3. 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:

{code}
from("couchdb:http://localhost:9999").process(someProcessor);
{code}

If

...

you

...

were

...

only

...

interested

...

in

...

deletes,

...

then

...

you

...

could

...

use

...

the

...

following

{
Code Block
}
from("couchdb:http://localhost:9999?updates=false").process(someProcessor);
{code}

If

...

you

...

wanted

...

to

...

insert

...

a

...

message

...

as

...

a

...

document,

...

then

...

the

...

body

...

of

...

the

...

exchange

...

is

...

used

{
Code Block
}
from("someProducingEndpoint").process(someProcessor).to("couchdb:http://localhost:9999")
{code}