すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for RocketMQ:環境準備 (V1.x.x)

最終更新日:Sep 23, 2024

SDK for C ++ を使用してApsaraMQ for RocketMQに接続してメッセージを送受信する前に、環境を準備する必要があります。 このトピックでは、SDK for C ++ を使用するための準備、手順、および注意事項について説明します。

重要
  • 最新のRocketMQ 5.x SDKを使用することを推奨します。 これらのSDKは、ApsaraMQ for RocketMQ 5.xブローカーと完全に互換性があり、より多くの機能と拡張機能を提供します。 詳細については、「リリースノート」をご参照ください。

  • Alibaba Cloudは、RocketMQ 4.x、3.x、およびTCPクライアントSDKのみを保持します。 既存のビジネスにのみ使用することを推奨します。

開始する前に、次の項目に注意してください。

  • このトピックでは、SDK for C ++ V1.x.xの環境準備についてのみ説明します。

  • ApsaraMQ for RocketMQコンソールに移動して、コードに関連するトピックとグループを作成する必要があります。 アプリケーションでカスタムメッセージタグを指定できます。 メッセージタグの作成方法については、「リソースの作成」をご参照ください。

  • ApsaraMQ for RocketMQを使用するアプリケーションは、Alibaba Cloud Elastic Compute Service (ECS) インスタンスにデプロイする必要があります。

SDK for C ++ のダウンロード

SDK for C ++ は、WindowsとLinuxで同じAPIを使用して使用できます。 CentOS 6/RHEL 6およびCentOS 7/RHEL 7はLinuxでサポートされます。 SDK For C ++ のダウンロード方法については、「リリースノート」をご参照ください。

パッケージをダウンロードして解凍すると、次のディレクトリ構造が表示されます。

  • demo/ (Windowsのみ)

    作成されたWindows C ++ デモが含まれています。

  • 例/

    通常のメッセージと順序付けられたメッセージを送受信する方法の例と、一方向モードでメッセージを送信する方法の例が含まれています。 Linuxでは、このディレクトリにはMakefileファイルも含まれており、examplesのコンパイルと管理に使用できます。

  • include/

    プログラムに必要なヘッダーファイルが含まれています。

  • lib/

    • 次のコードは、64ビット静的ライブラリと64ビット動的ライブラリを含む、Linux上のSDKサブディレクトリを示しています。

      lib-boost-share /
        libonsclient4cpp.so
      lib-boost-static /
        libonsclient4cpp.a 
    • 次のコードは、WindowsのSDKサブディレクトリを示しています。 64ビットSDK DLLライブラリです。 Visual Studio 2015がインストールされていない場合は、Visual C ++ 2015のランタイム環境であるvc_redist.x64をインストールする必要があります。

      64 /
      vc_redist.x64 
  • SDK_GUIDE.pdf

    SDK環境の準備方法に関するドキュメントとよくある質問 (FAQ) が含まれています。

  • 変更ログ

    新しいリリースのバグ修正と新機能が含まれています。

Linux C ++ SDK

2016年12月2日から、Linux CPPは依存関係として高性能Boostライブラリ (V1.62.0) を追加しました。 これにより、CPUリソース使用量が削減され、運用効率が向上します。 Linux CPPは、boost_systemboost_threadboost_chrono、およびboost_filesystemライブラリに依存しています。 静的ライブラリソリューションと動的ライブラリソリューションは、Linux CPPで利用できます。

静的ライブラリソリューション

ApsaraMQ for RocketMQのライブラリファイルはlib/lib-boost-staticディレクトリにあり、Boostライブラリはlibonsclient4cpp.aに静的にリンクされています。 Boostライブラリに依存しないサービスプロバイダーは、静的ライブラリソリューションを使用できます。 静的ライブラリソリューションでは、Boostライブラリはlibonsclient4cpp.aにリンクされます。 ファイルをコンパイルするときは、libonsclient4cpp.aにのみリンクする必要があります。 次のコードは、このメソッドの使用方法を示しています。

cd aliyun-mq-linux-cpp-sdk // ダウンロードしたSDK for C ++ パッケージが解凍されるパス。
cd example // サンプルディレクトリに移動し、ApsaraMQ for RocketMQコンソールで作成したトピックに関する情報と、サンプルファイルのキーに関する情報を入力します。
make static=1 
重要

完全に静的なリンクの場合は、C ++ 標準ライブラリ (libstdc ++) およびPOSIXスレッド (pthread) に関連する静的ライブラリがマシンにインストールされていることを確認してください。 デフォルトでインストールされるlibstdc ++ には、静的ライブラリは含まれません。 静的ライブラリをインストールするには、yumまたはapt-getコマンドを実行する必要があります。

上記の方法を使用すると、次の警告メッセージが返される場合があります。

warning: Using 'gethostbyaddr' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking            

完全に静的なリンクではなく、onsclient4cppにのみ静的にリンクし、他のライブラリに動的にリンクすることをお勧めします。 次のコードは、このメソッドの使用方法を示しています。

g ++ -ggdb -Wall -O3 -I ../include。./example/ProducerExampleForEx.cpp -Wl,-static -lonsclient4cpp -L ../lib-boost-static/ -Wl,-Bdynamic -lpthread -ldl -lrt -o. ./example/ProducerExampleForEx

Dual ABIがGCC5.xに導入されました。 リンクをコンパイルするときは、-D_GLIBCXX_USE_CXX11_ABI=0オプションを追加する必要があります。

動的ライブラリソリューション

ApsaraMQ for RocketMQのライブラリファイルは、lib/lib-boost-shareディレクトリにあります。 サービスプロバイダーが実行可能ファイルを生成する場合、サービスプロバイダーはBoost動的ライブラリをlibonsclient4cpp.soにリンクする必要があります。 サービスプロバイダーがBoostライブラリに依存しており、動的ライブラリソリューションを使用する場合は、Boostライブラリの依存関係について次の手順を実行します。

  1. Boost 1.62.0をダウンロードします。

    ブースト1.62.0

  2. Boost 1.62.0パッケージを解凍します。

    tar -- bzip2 -xf /path/to/boost_1_62_0.tar.bz2

  3. Boost 1.62.0をインストールします。

    1. cd path/to/boost_1_62_0コマンドを実行し、Boost 1.62.0パッケージの解凍先ディレクトリに移動します。

    2. を実行します。Run the. /bootstrap.shコマンドを実行してBoostを設定します。

    3. を実行します。Run the./b2 link=shared runtime-link=sharedコマンドを実行してBoostをコンパイルします。

    4. を実行します。Run the./b2インストールコマンドを実行してBoostをインストールします。

  4. ldconfig -v | grep libboostコマンドを実行します。 出力が表示されている場合、Boost動的ライブラリは動的ライブラリの検索パスにあります。

  5. 実行可能ファイルの生成時に、Boost動的ライブラリをApsaraMQ for RocketMQ動的ライブラリにリンクします。 次のコードは詳細を示しています。

    cd aliyun-mq-linux-cpp-sdk  // The path to which the downloaded SDK for C++ package is decompressed.
    cd example                  // Go to the example directory and enter the information about the topic that you created in the ApsaraMQ for RocketMQ console and the information about the key in the example file.
    g++ -Wall -Wno-deprecated -L ../lib/lib-boost-share/ -I ../include/ ProducerExampleForEx.cpp  -lonsclient4cpp -lboost_system -lboost_thread -lboost_chrono -lboost_filesystem -lpthread
    export LD_LIBRARY_PATH="../lib/lib-boost-share/"  // Add dynamically loaded search paths.
    ./a.out  // Run the program.

Windows C ++ SDK

Visual Studio 2015環境でのSDK for C ++ の使用

  1. Visual Studio 2015を使用してプロジェクトを作成します。createprojectnextfinish

  2. プロジェクトを右クリックし、[プロパティ] > [Configuration Manager] を選択します。 Active solution configurationパラメーターをreleaseに、Active solution platformパラメーターをx64に設定します。x64CM

  3. プロジェクトを右クリックし、[プロパティ] を選択します。 表示されるウィンドウで、[設定のプロパティ] > [全般] を選択し、[出力ディレクトリ] をクリックし、[/A] を選択します。 64ビットlibディレクトリ内のすべてのファイルを、Active solution platformパラメーターの設定に基づいて /Aディレクトリにコピーします。path

  4. プロジェクトを右クリックし、[プロパティ] を選択します。 表示されるウィンドウで、[設定のプロパティ] > [C/C ++]> [全般] を選択し、[追加のディレクトリを含める] をクリックし、[/B] を選択します。 includeディレクトリのヘッダーファイルを /Bディレクトリにコピーします。otherdirectoryadditional

  5. プロジェクトを右クリックし、[プロパティ] を選択します。 表示されるウィンドウで、[設定のプロパティ] > [リンカー] > [一般] を選択し、[追加のライブラリディレクトリ] をクリックし、[/A] を選択します。additionalA

  6. プロジェクトを右クリックし、[プロパティ] を選択します。 表示されるウィンドウで、[設定のプロパティ] > [リンカー] > [入力] を選択し、[追加の依存関係] をクリックし、[ONSClient4CPP.lib] を選択します。ONSClient4CPP.lib

  7. プロジェクトを右クリックし、[プロパティ] を選択します。 表示されるウィンドウで、[構成プロパティ] > [C/C ++]> [プリプロセッサ] を選択し、[プリプロセッサの定義] をクリックしてWIN32マクロを追加します。WIN32

Visual Studio 2015以外の環境でSDK for C ++ を使用する

  1. 前述の手順に従って、Visual Studio 2015環境に基づいてプロジェクトを構成します。

  2. vc_redist.x64をインストールします。

    重要

    複雑な設定を防ぐために、C ++ デモ用の事前設定済みSDKを使用できます。 SDK for C ++ パッケージをダウンロードして解凍し、デモディレクトリに移動して、Visual Studio 2015でプロジェクトを開くことができます。

    以下の図は、例を提供する。

    demopropertiessetfilepath

    上記の操作を実行すると、環境はコンパイルされます。 次に、[ビルド] をクリックして実行可能プログラムをコンパイルし、実行可能プログラムが存在するディレクトリまたはプログラムを実行するシステムディレクトリにDLLファイルをコピーします。

関連ドキュメント

サンプルコード