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_system
、boost_thread
、boost_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ライブラリの依存関係について次の手順を実行します。
Boost 1.62.0をダウンロードします。
Boost 1.62.0パッケージを解凍します。
tar -- bzip2 -xf /path/to/boost_1_62_0.tar.bz2
Boost 1.62.0をインストールします。
cd path/to/boost_1_62_0
コマンドを実行し、Boost 1.62.0パッケージの解凍先ディレクトリに移動します。を実行します。Run the
. /bootstrap.sh
コマンドを実行してBoostを設定します。を実行します。Run the
./b2 link=shared runtime-link=shared
コマンドを実行してBoostをコンパイルします。を実行します。Run the
./b2インストール
コマンドを実行してBoostをインストールします。
ldconfig -v | grep libboost
コマンドを実行します。 出力が表示されている場合、Boost動的ライブラリは動的ライブラリの検索パスにあります。実行可能ファイルの生成時に、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 ++ の使用
Visual Studio 2015を使用してプロジェクトを作成します。
プロジェクトを右クリックし、[プロパティ] > [Configuration Manager] を選択します。 Active solution configurationパラメーターをreleaseに、Active solution platformパラメーターをx64に設定します。
プロジェクトを右クリックし、[プロパティ] を選択します。 表示されるウィンドウで、[設定のプロパティ] > [全般] を選択し、[出力ディレクトリ] をクリックし、[/A] を選択します。 64ビットlibディレクトリ内のすべてのファイルを、Active solution platformパラメーターの設定に基づいて /Aディレクトリにコピーします。
プロジェクトを右クリックし、[プロパティ] を選択します。 表示されるウィンドウで、[設定のプロパティ] > [C/C ++]> [全般] を選択し、[追加のディレクトリを含める] をクリックし、[/B] を選択します。
include
ディレクトリのヘッダーファイルを /Bディレクトリにコピーします。プロジェクトを右クリックし、[プロパティ] を選択します。 表示されるウィンドウで、[設定のプロパティ] > [リンカー] > [一般] を選択し、[追加のライブラリディレクトリ] をクリックし、[/A] を選択します。
プロジェクトを右クリックし、[プロパティ] を選択します。 表示されるウィンドウで、[設定のプロパティ] > [リンカー] > [入力] を選択し、[追加の依存関係] をクリックし、[ONSClient4CPP.lib] を選択します。
プロジェクトを右クリックし、[プロパティ] を選択します。 表示されるウィンドウで、[構成プロパティ] > [C/C ++]> [プリプロセッサ] を選択し、[プリプロセッサの定義] をクリックしてWIN32マクロを追加します。
Visual Studio 2015以外の環境でSDK for C ++ を使用する
前述の手順に従って、Visual Studio 2015環境に基づいてプロジェクトを構成します。
vc_redist.x64をインストールします。
重要複雑な設定を防ぐために、C ++ デモ用の事前設定済みSDKを使用できます。 SDK for C ++ パッケージをダウンロードして解凍し、デモディレクトリに移動して、Visual Studio 2015でプロジェクトを開くことができます。
以下の図は、例を提供する。
上記の操作を実行すると、環境はコンパイルされます。 次に、[ビルド] をクリックして実行可能プログラムをコンパイルし、実行可能プログラムが存在するディレクトリまたはプログラムを実行するシステムディレクトリにDLLファイルをコピーします。