Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第27章 CouchDB
Camel CouchDB コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.11 から利用可能
couchdb: コンポーネントを使用すると、CouchDB インスタンスをメッセージのプロデューサーまたはコンシューマーとして扱うことができます。軽量の LightCouch API を使用すると、この Camel コンポーネントには以下の機能があります。
- コンシューマーとして、は、挿入、更新、および削除をメッセージとして Camel ルートに公開するために couch changeset を監視します。
- プロデューサーとして、はドキュメントを保存または更新できます。
- 複数のインスタンスにまたがる複数のデータベースなど、必要な数だけエンドポイントをサポートできます。
- 削除時にのみイベントトリガーを持つことができ、挿入/更新または all (デフォルト)のみを挿入します。
- sequenceId、ドキュメントリビジョン、ドキュメント ID、および HTTP メソッドタイプに設定されたヘッダー。
Maven ユーザーは、このコンポーネントの
pom.xml
に以下の依存関係を追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
couchdb:http://hostname[:port]/database?[options]
couchdb:http://hostname[:port]/database?[options]
hostname は、実行中の couchdb インスタンスのホスト名です。port はオプションであり、指定されていない場合、デフォルトは 5984 に設定されます。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロパティー | デフォルト | 説明 |
---|---|---|
削除
|
true
|
ドキュメントの削除はイベントとして公開されます。 |
updates
|
true
|
ドキュメントの挿入/更新がイベントとして公開される |
heartbeat
|
30000
|
ソケットを存続させるための空のメッセージを送信する頻度 |
createDatabase
|
true
|
データベースが存在しない場合は作成します。 |
username
|
null
|
認証されたデータベースの場合のユーザー名 |
password
|
null
|
認証されたデータベースのパスワード |
Headers リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のヘッダーは、メッセージトランスポート中にエクスチェンジに設定されます。
プロパティー | 値 |
---|---|
CouchDbDatabase
|
メッセージの元となったデータベース |
CouchDbSeq
|
更新/削除メッセージの couchdb 変更セットシーケンス番号 |
CouchDbId
|
couchdb ドキュメント ID |
CouchDbRev
|
couchdb ドキュメントリビジョン |
CouchDbMethod
|
メソッド(削除/更新) |
メッセージが受信されると、ヘッダーはコンシューマーによって設定されます。また、プロデューサーは挿入/更新が行われるとダウンストリームプロセッサーのヘッダーも設定します。プロデューサーの前に設定されたヘッダーは無視されます。たとえば、CouchDbId をヘッダーとして設定すると、挿入の ID として使用されず、ドキュメントの ID は引き続き使用されます。
メッセージボディー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、挿入するドキュメントとしてメッセージボディーを使用します。ボディーが String のインスタンスである場合は、挿入前に GSON オブジェクトにマーシャリングされます。つまり、文字列が有効な JSON である必要があります。そうでないと、挿入/更新に失敗します。ボディーが com.google.gson.JsonElement のインスタンスである場合は、そのまま挿入されます。そうしないと、プロデューサーはサポートされていないボディータイプの例外を出力します。
サンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
たとえば、ローカルで実行している CouchDB インスタンスからすべての挿入、更新、および削除を 9999 ポートで使用する場合は、以下を使用できます。
from("couchdb:http://localhost:9999").process(someProcessor);
from("couchdb:http://localhost:9999").process(someProcessor);
削除のみに関心がある場合は、以下を使用できます。
from("couchdb:http://localhost:9999?updates=false").process(someProcessor);
from("couchdb:http://localhost:9999?updates=false").process(someProcessor);
メッセージをドキュメントとして挿入する場合は、エクスチェンジのボディーが使用されます。
from("someProducingEndpoint").process(someProcessor).to("couchdb:http://localhost:9999")
from("someProducingEndpoint").process(someProcessor).to("couchdb:http://localhost:9999")