Topik ini mencakup persiapan, instruksi, dan catatan untuk menggunakan C++ SDK guna mengirim dan menerima pesan di ApsaraMQ for RocketMQ.
Kami menyarankan Anda menggunakan SDK RocketMQ 5.x terbaru. SDK ini sepenuhnya kompatibel dengan broker ApsaraMQ for RocketMQ 5.x serta menyediakan lebih banyak fungsi dan fitur yang ditingkatkan. Untuk informasi selengkapnya, lihat Informasi versi C++ SDK.
Alibaba Cloud hanya memelihara SDK client TCP RocketMQ 4.x dan 3.x. Kami menyarankan Anda hanya menggunakannya untuk bisnis yang sudah ada.
Sebelum memulai, perhatikan hal-hal berikut:
-
Panduan ini hanya berlaku untuk C++ SDK v1.x.x.
-
Topic dan group ID yang digunakan dalam kode Anda harus dibuat terlebih dahulu di Konsol. Anda dapat menyesuaikan tag pesan secara penuh dalam aplikasi Anda. Untuk petunjuk cara membuat sumber daya tersebut, lihat Buat sumber daya.
-
Aplikasi yang menggunakan ApsaraMQ for RocketMQ harus dideploy pada Instance ECS.
Unduh SDK
C++ SDK menyediakan API yang identik untuk Windows dan Linux. Distribusi Linux yang didukung meliputi CentOS 6 (RHEL 6) dan CentOS 7 (RHEL 7). Untuk mengunduh C++ SDK, lihat Catatan rilis untuk TCP client SDK untuk C++.
Setelah Anda mengunduh dan mengekstrak paket tersebut, struktur direktori berikut akan muncul:
-
demo/ (Hanya untuk Windows)
Proyek demo C++ Windows yang telah dikompilasi sebelumnya.
-
example/
Contoh pengiriman pesan normal, pesan satu arah (one-way), dan pesan terurut, serta konsumsi pesan normal dan terurut. Pada Linux, direktori ini juga berisi
Makefileuntuk mengompilasi dan mengelola fileexample. -
include/
File header yang diperlukan untuk aplikasi Anda.
-
lib/
-
Subdirektori untuk SDK Linux berisi library statis dan dinamis 64-bit.
lib-boost-share/ libonsclient4cpp.so lib-boost-static/ libonsclient4cpp.a -
Subdirektori untuk SDK Windows berisi DLL 64-bit. Jika Visual Studio 2015 belum terinstal, Anda harus menginstal
vc_redist.x64. Ini adalah runtime untuk Visual C++ 2015.64/ vc_redist.x64
-
-
SDK_GUIDE.pdf
Dokumentasi dan FAQ untuk menyiapkan lingkungan SDK.
-
changelog
Daftar perbaikan bug dan fitur baru dalam rilis terbaru.
Linux C++ SDK
Sejak 2 Desember 2016, Linux C++ SDK bergantung pada library Boost berkinerja tinggi (versi 1.62.0) untuk mengurangi penggunaan CPU dan meningkatkan efisiensi. SDK ini terutama bergantung pada empat library: boost_system, boost_thread, boost_chrono, dan boost_filesystem. Solusi tautan statis maupun dinamis tersedia.
Tautan statis
File library untuk ApsaraMQ for RocketMQ berada di direktori lib/lib-boost-static, di mana library Boost ditautkan secara statis ke libonsclient4cpp.a. Jika aplikasi Anda tidak memiliki dependensi terhadap library Boost, Anda dapat langsung menggunakan solusi library statis ini. Dalam solusi ini, library Boost telah ditautkan ke libonsclient4cpp.a, sehingga Anda hanya perlu menautkan libonsclient4cpp.a saat kompilasi. Tidak diperlukan operasi tambahan. Penggunaannya sebagai berikut.
cd aliyun-mq-linux-cpp-sdk // Direktori tempat Anda mengekstrak SDK.
cd example // Masuk ke direktori example dan modifikasi file example dengan topic, kunci, dan informasi lainnya.
make static=1
Untuk tautan statis penuh, pastikan library statis terkait seperti libstdc++ dan pthread telah terinstal di mesin Anda. Instalasi default libstdc++ tidak menyertakan library statis. Anda harus menggunakan yum atau apt-get untuk menginstal library statis yang diperlukan.
Menggunakan metode ini dapat menghasilkan peringatan berikut:
warning: Using 'gethostbyaddr' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
Sebagai praktik terbaik, kami menyarankan untuk menghindari tautan statis penuh. Sebaliknya, lakukan tautan statis hanya untuk onsclient4cpp dan tautan dinamis untuk library lainnya. Gunakan perintah berikut:
g++ -ggdb -Wall -O3 -I../include ../example/ProducerExampleForEx.cpp -Wl,-static -lonsclient4cpp -L../lib/lib-boost-static/ -Wl,-Bdynamic -lpthread -ldl -lrt -o ../example/ProducerExampleForEx
Selain itu, karena GCC 5.x memperkenalkan Dual ABI, tambahkan opsi -D_GLIBCXX_USE_CXX11_ABI=0 saat Anda mengompilasi dan menautkan.
Tautan dinamis
File library ApsaraMQ for RocketMQ berada di direktori lib/lib-boost-share. Anda harus menautkan library dinamis Boost dan libonsclient4cpp.so saat membuat file yang dapat dieksekusi. Jika aplikasi Anda sudah bergantung pada Boost dan Anda perlu menggunakan solusi tautan dinamis, lakukan langkah-langkah berikut:
-
Unduh Boost versi 1.62.0.
-
Ekstrak paket Boost 1.62.0.
tar --bzip2 -xf /path/to/boost_1_62_0.tar.bz2 -
Instal Boost 1.62.0.
-
Berpindah ke direktori tempat Anda mengekstrak Boost 1.62.0:
cd path/to/boost_1_62_0 -
Konfigurasi Boost:
./bootstrap.sh -
Kompilasi Boost:
./b2 link=shared runtime-link=shared -
Instal Boost:
./b2 install
-
-
Jalankan
ldconfig -v|grep libboost. Keluaran dari perintah ini menunjukkan bahwa library dinamis Boost berada dalam jalur pencarian library dinamis. -
Saat membuat file yang dapat dieksekusi, tautkan library dinamis Boost dan library dinamis ApsaraMQ for RocketMQ dengan perintah berikut:
cd aliyun-mq-linux-cpp-sdk // Direktori tempat Anda mengekstrak SDK. cd example // Masuk ke direktori example dan modifikasi file example dengan topic, kunci, dan informasi lainnya dari Konsol ApsaraMQ for RocketMQ. 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/" // Tambahkan jalur pencarian untuk pemuatan dinamis. ./a.out // Jalankan program.
Windows C++ SDK
Gunakan C++ SDK di lingkungan Visual Studio 2015
-
Buat proyek baru di Visual Studio 2015. Di dialog New Project, buka Installed > Templates > Visual C++, pilih Win32, lalu pilih Win32 Console Application. Setelah menentukan nama proyek, klik OK. Di halaman ringkasan Win32 Application Wizard, pastikan tipe proyek adalah Console application, lalu klik Next >. Di halaman Application Settings, atur Application type menjadi Console application, centang kotak Empty project, lalu klik Finish.
-
Klik kanan proyek Anda di Solution Explorer dan pilih Properties > Configuration Manager. Atur Active solution configuration menjadi release dan Active solution platform menjadi x64.
-
Klik kanan proyek, pilih Properties > Configuration Properties > General, lalu atur Output Directory menjadi /A. Berdasarkan pengaturan Active solution platform, salin semua file dari direktori lib 64-bit ke direktori output /A. Klik kanan proyek, pilih Properties > Configuration Properties > General, pastikan Output Directory adalah
$(SolutionDir)$(Platform)\$(Configuration)\(jalur ini dihasilkan otomatis setelah build), lalu atur Platform Toolset menjadi Visual Studio 2015 - Windows XP (v140_xp). Salin fileONSClient4CPP.dll,ONSClient4CPP.lib, danONSClient4CPP.pdbdari direktori lib SDK yang diunduh ke direktori output ini. -
Klik kanan proyek dan pilih Properties > Configuration Properties > C/C++-General > Additional Include Directories: /B. Salin file header dari direktori
includeke direktori include: /B. -
Klik kanan proyek lalu pilih Properties > Configuration Properties > Linker > General > Additional Library Directories: /A. Tambahkan jalur ke direktori
libdari SDK, sepertiE:\aliyun-mq-windows-cpp-sdk\lib\64, yang berisi file DLL yang relevan. Jika Anda menggunakan Visual Studio 2015 di Windows 7, Anda juga harus menambahkan jalur pustakaucrt, sepertiC:\Program Files (x86)\Windows Kits\10\Lib\10.0.10150.0\ucrt\x64. -
Navigasikan ke Properties > Configuration Properties > Linker > Input. Tambahkan ONSClient4CPP.lib ke Additional Dependencies.
-
Navigasi ke Properties > Configuration Properties > C/C++ > Preprocessor. Tambahkan makro WIN32 ke Preprocessor Definitions.
Gunakan C++ SDK di lingkungan selain Visual Studio 2015
-
Pertama, konfigurasikan proyek Anda dengan mengikuti langkah-langkah untuk lingkungan Visual Studio 2015.
-
Instal vc_redist.x64, yaitu runtime untuk Visual C++ 2015.
PentingUntuk menghindari konfigurasi manual, Anda dapat menggunakan demo SDK yang telah dikonfigurasi sebelumnya. Setelah mengunduh dan mengekstrak SDK, buka direktori
demodan buka proyek tersebut di Visual Studio 2015.Di Solution Explorer, klik kanan proyek demo dan buka propertinya. Atur Configuration menjadi Release dan Platform menjadi x64. Buka Configuration Properties > C/C++ > General. Edit bidang Additional Include Directories dan tambahkan dua jalur:
../../includedanC:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt. Ganti nomor versi, seperti 10.0.10150.0, dengan versi Windows Kits yang terinstal di mesin Anda.Lingkungan build Anda kini telah dikonfigurasi. Klik Build untuk mengompilasi program yang dapat dieksekusi. Untuk menjalankan program, salin file DLL ke direktori yang sama dengan file yang dapat dieksekusi atau ke direktori sistem.