88.12. 永続的なテールトラッキングを有効にする
この機能を有効にするには、エンドポイント URI で少なくとも次のオプションを設定します。
- 
						persistentTailTrackingオプションをtrueに設定
- 
						この consumer の一意の識別子に persistentIdオプションを追加して、同じコレクションを多くの consumer で再利用できるようにします
				さらに、tailTrackDb、tailTrackCollection、および tailTrackField オプションを設定して、ランタイム情報が保存される場所をカスタマイズできます。各オプションの説明については、このページの上部にあるエンドポイントオプションの表を参照してください。
			
				たとえば、次のルートは、departureTime を増加フィールドとして使用し、デフォルトの再生成カーソル遅延を 1000 ミリ秒に設定して、永続的なテールトラッキングをオンにし、cancellationsTracker の下で永続化して、flights.cancellations キャップコレクションから消費します。flights.camelTailTracking の id で、最後に処理された値を lastTrackingValue フィールドに格納します (camelTailTracking と lastTrackingValue はデフォルトです)。
			
from("mongodb:myDb?database=flights&collection=cancellations&tailTrackIncreasingField=departureTime&persistentTailTracking=true" +
     "&persistentId=cancellationsTracker")
    .id("tailableCursorConsumer2")
    .autoStartup(false)
    .to("mock:test");
from("mongodb:myDb?database=flights&collection=cancellations&tailTrackIncreasingField=departureTime&persistentTailTracking=true" +
     "&persistentId=cancellationsTracker")
    .id("tailableCursorConsumer2")
    .autoStartup(false)
    .to("mock:test");以下は、上記と同じ別の例ですが、永続的なテールトラッキングランタイム情報が trackers.camelTrackers コレクションの lastProcessedDepartureTime フィールドに格納されます。
88.12.1. Change Streams consumer
変更ストリームを使用すると、MongoDB oplog を追跡する複雑さやリスクなしに、アプリケーションはリアルタイムのデータ変更にアクセスできます。アプリケーションは変更ストリームを使用して、コレクションのすべてのデータ変更をサブスクライブし、すぐに対応できます。変更ストリームは集約フレームワークを使用するため、アプリケーションは特定の変更をフィルタリングしたり、通知を自由に変換したりすることもできます。交換本体には、変更の完全なドキュメントが含まれます。
					Change Streams Consumer を設定するには、consumerType、database、collection、およびオプションの JSON プロパティー streamFilter を指定して、イベントをフィルタリングする必要があります。その JSON プロパティーは、MongoDB の標準的な $match 集計です。XML DSL 設定を使用して簡単に指定できます。
				
<route id="filterConsumer">
    <from uri="mongodb:myDb?consumerType=changeStreams&database=flights&collection=tickets&streamFilter={ '$match':{'$or':[{'fullDocument.stringValue': 'specificValue'}]} }"/>
    <to uri="mock:test"/>
</route>
<route id="filterConsumer">
    <from uri="mongodb:myDb?consumerType=changeStreams&database=flights&collection=tickets&streamFilter={ '$match':{'$or':[{'fullDocument.stringValue': 'specificValue'}]} }"/>
    <to uri="mock:test"/>
</route>Java 設定:
from("mongodb:myDb?consumerType=changeStreams&database=flights&collection=tickets&streamFilter={ '$match':{'$or':[{'fullDocument.stringValue': 'specificValue'}]} }")
    .to("mock:test");
from("mongodb:myDb?consumerType=changeStreams&database=flights&collection=tickets&streamFilter={ '$match':{'$or':[{'fullDocument.stringValue': 'specificValue'}]} }")
    .to("mock:test");streamFilter 値をプロパティープレースホルダーに外部化することで、エンドポイント URI パラメーターを よりクリーン で読みやすくすることができます。
					changeStreams consumer タイプは、次の OUT ヘッダーも返します。
				
| ヘッダーのキー | クイック定数 | 説明 (MongoDB API ドキュメントから抜粋) | データのタイプ | 
|---|---|---|---|
| 
									 | 
									 | 発生した操作のタイプ。値は、insert、delete、replace、update、drop、rename、dropDatabase、invalidate のいずれかです。 | String | 
| 
									 | 
									 | 挿入、置換、削除、更新操作 (つまり、CRUD 操作) によって作成または変更されたドキュメントの _id を含むドキュメント。シャードコレクションの場合、ドキュメントの完全なシャードキーも表示されます。_id フィールドは、すでにシャードキーの一部である場合は繰り返されません。 | ObjectId |