検索

218.7. 調整可能なカーソルコンシューマーの仕組み

download PDF

カーソルをテール可能なカーソルに変換するには、最初にカーソルを生成する際に、いくつかの特別なフラグが MongoDB に通知されます。作成後、カーソルは開いたままとなり、新規データが到達するまで MongoCursor.next() メソッドの呼び出し時にブロックされます。ただし、MongoDB サーバーは、不確定な期間後に新規データが表示されない場合は、カーソルを終了する権利を確保します。新しいデータの消費を継続するには、カーソルを再生成する必要があります。この作業を行うには、停止した位置を覚えておく必要があります。そうでないと、最初からやり直す必要があります。

Camel MongoDB の調整可能なカーソルコンシューマーは、これらのすべてのタスクを処理します。性質を増加させるデータ内の一部のフィールドにキーを提供する必要があります。これは、再生成するたびにカーソルを置くマーカーとして機能します。たとえば、タイムスタンプ、連続 ID など。MongoDB でサポートされるデータタイプ。正常に機能するために日付、文字列、および整数が見つかります。このメカニズムをこのコンポーネントのコンテキストで呼び出します。

コンシューマーはこのフィールドの最後の値を記憶し、カーソルを再生成するたびに、reads Field > lastValue のようにフィルターを指定してクエリーを実行し、未読のデータのみが消費される ようにします。

増加フィールドの設定: エンドポイント URI tailTrackingIncreasingField オプションでの増加フィールドのキーを設定します。Camel 2.10 では、このフィールドのネストされたナビゲーションはまだサポートされていないため、データのトップレベルのフィールドでなければなりません。つまり、「timestamp」フィールドは okay ですが、「nested.timestamp」は機能しません。入れ子になった増加フィールドのサポートが必要な場合は、Camel JIRA でチケットを作成してください。

カーソルの再生成遅延: 新規データが初期時に利用できない場合、MongoDB はカーソルを即時に強制終了することです。この場合、サーバーに負荷がかからないため、(デフォルト値 1000ms) cursorRegenerationDelay オプションが導入されました。これは、ニーズに合わせて変更できます。

以下に例を示します。

from("mongodb3:myDb?database=flights&collection=cancellations&tailTrackIncreasingField=departureTime")
    .id("tailableCursorConsumer1")
    .autoStartup(false)
    .to("mock:test");

上記のルートは、「flights.cancellations」の上限付きのコレクションから消費されます。「departureTime」を増加フィールドとして使用し、デフォルトの再生成カーソル遅延は 1000ms です。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.