ストリーム レイヤーから読み取る ( 例 )

このページでは、異なるプラットフォームでキャッシュサンプルプロジェクトをビルドおよび実行する方法、カタログとパーティション メタデータを取得する方法、および HERE Data SDK for C++ を使用してパーティション データを取得する方法について説明します。

サンプルプロジェクトを実行する前に、 HERE platform に認証します。

  1. [ アプリとキー ] ページで、アプリのアクセスキー ID とアクセスキーのシークレットをコピーします。

    アクセスキー ID およびアクセスキーシークレットを取得する方法については、『 Identity & Access Management 開発者ガイド』の「 Register your application 」 ( アプリケーションを登録する ) の項を参照してください。

  2. examples/main.cppで、プレースホルダーをカタログのアクセスキー ID 、アクセスキーシークレット、および HERE リソースネーム ( HERE リソースネーム )に置き換えます。

    メモ

    コマンド ラインオプションを使用して、これらの値を指定することもできます。

    AccessKey access_key{"here.access.key.id", "here.access.key.secret"};
    

Linux でビルドして実行します

Linux でサンプルプロジェクトをビルドして実行するには、次の手順に従います。

  1. CMake ターゲットの例を有効にします。

    mkdir build && cd build
    cmake -DOLP_SDK_BUILD_EXAMPLES=ON ..
    
  2. build フォルダで、サンプルプロジェクトを構築します。

    cmake --build . --target dataservice-example
    
  3. サンプルプロジェクトを実行します。

    ./examples/dataservice-example --example read_stream --key_id "here.access.key.id" --key_secret "here.access.key.secret" --catalog "catalog"
    
  4. ( オプション ) 他のパラメータを使用して例を実行するには、 help コマンドを実行してから、必要なパラメータを選択します。

    ./examples/dataservice-example --help
    

サンプルプロジェクトをビルドして実行すると、次の情報が表示されます。

  • ./dataservice-example –カタログおよびレイヤーの説明。
  • read-stream-layer-example - Poll data - Success, messages size - 6 –レイヤーから取得したデータのサイズを表示する成功メッセージ。
./dataservice-example --example read --key_id "here.access.key.id" --key_secret "here.access.key.secret" --catalog "catalog" --layer_id "layer_id" --type-of-subscription "subscription_type"
[INFO] read-stream-layer-example - Message data: size - 16
[INFO] read-stream-layer-example - No new messages is received
[INFO] read-stream-layer-example - Poll data - Success, messages size - 6

仕組み

ストリーム レイヤーからデータを取得します

ストリーム レイヤーにサブスクライブしている場合は、そのメッセージを読み取ることができます。

ストリーム レイヤーからデータを取得するには、次の手順に従います。

  1. OlpClientSettings オブジェクトを作成します。

    手順については、「プラットフォームクライアント設定を作成する」を参照してください。

  2. StreamLayerClient ステップ 1 で設定したレイヤー、レイヤー ID 、およびプラットフォームクライアントを含むカタログの HERE リソースネーム ( HERE リソースネーム )を使用してオブジェクトを作成します。

    olp::dataservice::read::StreamLayerClient client(
         client::HRN catalog, std::string layer_id,
         client::OlpClientSettings settings);
    
  3. SubscribeRequestserial または parallel サブスクリプションタイプでオブジェクトを作成します。

    • 1 つのサブスクリプションを使用して、アプリケーションがより小さな量のデータを読み取る必要がある場合 serial は、サブスクリプションタイプを使用します。

    • アプリケーションが大量のデータを並行して読み取る場合 parallel は、サブスクリプションタイプとサブスクリプション ID を使用します。

    auto request = olp::dataservice::read::SubscribeRequest()
                      .WithSubscriptionMode(olp::dataservice::read::SubscribeRequest::SubscriptionMode::kSerial));
    
  4. SubscribeSubscribeRequest パラメーターを使用してメソッドを呼び出します。

    client::CancellableFuture<SubscribeResponse> Subscribe(
       SubscribeRequest request);
    

    リクエストされたサブスクリプションから選択したレイヤーへのサブスクリプション ID を受け取ります。

  5. Poll メソッドを呼び出します。

    client::CancellableFuture<PollResponse> Poll();
    

    レイヤーデータとパーティション メタデータでメッセージを受信します。 Poll このメソッドはオフセットもコミットするので、新しいメッセージのポーリングを続行できます。

    データサイズが 1 MB 未満の場合、データフィールドに値が入力されます。 データサイズが 1 MB を超える場合、 blob ストアに保存されているオブジェクトをポイントするデータ ハンドルが取得されます。

  6. データサイズが 1 MB を超える場合 GetDataMessages は、インスタンスでメソッドを呼び出します。

     client::CancellableFuture<DataResponse> GetData(
         const model::Message& message);
    

要求されたパーティションからデータを取得します。

ストリーム レイヤーへのサブスクリプションを削除します

メッセージの使用を停止する場合は、ストリーム レイヤーへのサブスクリプションを削除します。

auto unsubscribe_response = stream_client.Unsubscribe().GetFuture().get();
  if (unsubscribe_response.IsSuccessful()) {
      // Successfully unsubscribed.
  }

」に一致する結果は 件です

    」に一致する結果はありません