Sebelum menggunakan SDK untuk C++ untuk terhubung ke ApsaraMQ for RocketMQ dalam mengirim dan menerima pesan, Anda perlu menyiapkan lingkungan. Topik ini menjelaskan langkah-langkah persiapan, petunjuk, dan perhatian yang diperlukan untuk menggunakan SDK untuk C++.
Kami merekomendasikan penggunaan RocketMQ 5.x SDK terbaru. SDK ini sepenuhnya kompatibel dengan broker ApsaraMQ for RocketMQ 5.x dan menyediakan lebih banyak fungsi serta fitur yang ditingkatkan. Untuk informasi lebih lanjut, lihat Deskripsi Versi.
Alibaba Cloud hanya memelihara RocketMQ 4.x, 3.x, dan TCP client SDK. Kami merekomendasikan agar Anda hanya menggunakannya untuk bisnis yang sudah ada.
Sebelum memulai, perhatikan hal-hal berikut:
Topik ini hanya mencakup persiapan lingkungan untuk SDK untuk C++ V1.x.x.
Anda harus membuat topik dan grup yang digunakan dalam kode melalui konsol ApsaraMQ for RocketMQ. Anda dapat menentukan tag pesan kustom di aplikasi Anda. Untuk panduan pembuatan tag pesan, lihat Buat Sumber Daya.
Aplikasi yang menggunakan ApsaraMQ for RocketMQ harus diterapkan pada instance Alibaba Cloud Elastic Compute Service (ECS).
Unduh SDK untuk C++
SDK untuk C++ dapat digunakan di Windows dan Linux dengan API yang sama. CentOS 6/RHEL 6 dan CentOS 7/RHEL 7 didukung di Linux. Untuk informasi tentang cara mengunduh SDK untuk C++, lihat Catatan Rilis.
Setelah mengunduh dan mengekstrak paket, struktur direktori berikut akan ditampilkan:
demo/ (hanya untuk Windows)
Berisi demo C++ Windows yang telah dibuat.
example/
Berisi contoh pengiriman dan penerimaan pesan normal serta pesan terurut, serta contoh pengiriman pesan dalam mode satu arah. Di Linux, direktori ini juga berisi file
Makefileyang dapat digunakan untuk mengompilasi dan mengelolacontoh-contoh.include/
Berisi file header yang diperlukan oleh program Anda.
lib/
Kode berikut menunjukkan subdirektori SDK di Linux, termasuk pustaka statis 64-bit dan pustaka dinamis 64-bit:
lib-boost-share/ libonsclient4cpp.so lib-boost-static/ libonsclient4cpp.aKode berikut menunjukkan subdirektori SDK di Windows. Ini adalah pustaka SDK DLL 64-bit. Jika Visual Studio 2015 belum diinstal, Anda harus menginstal
vc_redist.x64, yaitu lingkungan runtime untuk Visual C++ 2015.64/ vc_redist.x64
SDK_GUIDE.pdf
Berisi dokumentasi dan pertanyaan yang sering diajukan (FAQ) tentang cara menyiapkan lingkungan SDK.
changelog
Berisi perbaikan bug dan fitur baru dalam rilis baru.
Linux C++ SDK
Mulai 2 Desember 2016, Linux CPP telah menambahkan pustaka Boost berperforma tinggi (V1.62.0) sebagai dependensinya. Hal ini mengurangi penggunaan sumber daya CPU dan meningkatkan efisiensi operasi. Linux CPP bergantung pada pustaka boost_system, boost_thread, boost_chrono, dan boost_filesystem. Solusi pustaka statis dan solusi pustaka dinamis tersedia untuk Linux CPP.
Solusi pustaka statis
File pustaka ApsaraMQ for RocketMQ berada di direktori lib/lib-boost-static, dan pustaka Boost secara statis tertaut ke libonsclient4cpp.a. Penyedia layanan yang tidak bergantung pada pustaka Boost dapat menggunakan solusi pustaka statis. Dalam solusi pustaka statis, pustaka Boost tertaut ke libonsclient4cpp.a. Saat mengompilasi file, Anda hanya perlu menautkan ke libonsclient4cpp.a. Kode berikut menunjukkan cara menggunakan metode ini:
cd aliyun-mq-linux-cpp-sdk // Jalur tempat paket SDK untuk C++ yang diunduh diekstraksi.
cd example // Pergi ke direktori contoh dan masukkan informasi tentang topik yang Anda buat di konsol ApsaraMQ for RocketMQ dan informasi tentang kunci di file contoh.
make static=1 Untuk tautan statis sepenuhnya, pastikan bahwa pustaka statis yang terkait dengan pustaka standar C++ (libstdc++) dan POSIX threads (pthread) diinstal di mesin Anda. libstdc++ yang diinstal secara default tidak berisi pustaka statis. Anda harus menjalankan perintah yum atau apt-get untuk menginstal pustaka statis.
Saat menggunakan metode sebelumnya, pesan peringatan berikut mungkin dikembalikan:
warning: Menggunakan 'gethostbyaddr' dalam aplikasi yang ditautkan secara statis memerlukan pustaka bersama dari versi glibc yang digunakan untuk penautan Kami merekomendasikan agar Anda hanya menautkan secara statis ke onsclient4cpp dan menautkan secara dinamis ke pustaka lainnya alih-alih menggunakan tautan statis sepenuhnya. Kode berikut menunjukkan cara menggunakan metode ini:
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 Dual ABI diperkenalkan di GCC 5.x. Saat mengompilasi tautan, Anda harus menambahkan opsi -D_GLIBCXX_USE_CXX11_ABI=0.
Solusi pustaka dinamis
File pustaka ApsaraMQ for RocketMQ berada di direktori lib/lib-boost-share. Saat penyedia layanan menghasilkan file yang dapat dieksekusi, penyedia layanan harus menautkan pustaka dinamis Boost ke libonsclient4cpp.so. Jika penyedia layanan bergantung pada pustaka Boost dan ingin menggunakan solusi pustaka dinamis, lakukan langkah-langkah berikut untuk dependensi pustaka Boost:
Unduh Boost 1.62.0.
Ekstrak paket Boost 1.62.0.
tar --bzip2 -xf /path/to/boost_1_62_0.tar.bz2Instal Boost 1.62.0.
Jalankan perintah
cd path/to/boost_1_62_0untuk masuk ke direktori tempat paket Boost 1.62.0 diekstraksi.Jalankan perintah
./bootstrap.shuntuk mengonfigurasi Boost.Jalankan perintah
./b2 link=shared runtime-link=shareduntuk mengompilasi Boost.Jalankan perintah
./b2 installuntuk menginstal Boost.
Jalankan perintah
ldconfig -v|grep libboost. Jika ada keluaran yang ditampilkan, pustaka dinamis Boost berada di jalur pencarian pustaka dinamis.Tautkan pustaka dinamis Boost ke pustaka dinamis ApsaraMQ for RocketMQ saat file yang dapat dieksekusi dihasilkan. Kode berikut menunjukkan detailnya:
cd aliyun-mq-linux-cpp-sdk // Jalur tempat paket SDK untuk C++ yang diunduh diekstraksi. cd example // Pergi ke direktori contoh dan masukkan informasi tentang topik yang Anda buat di konsol ApsaraMQ for RocketMQ dan informasi tentang kunci di file contoh. 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 yang dimuat secara dinamis. ./a.out // Jalankan program.
Windows C++ SDK
Gunakan SDK untuk C++ di lingkungan Visual Studio 2015
Gunakan Visual Studio 2015 untuk membuat proyek Anda.


Klik kanan proyek dan pilih Properties > Configuration Manager. Atur parameter Active solution configuration ke release dan parameter Active solution platform ke x64.

Klik kanan proyek dan pilih Properties. Di jendela yang muncul, pilih Configuration Properties > General, klik Output Directory, dan kemudian pilih /A. Salin semua file di direktori lib 64-bit ke direktori /A sesuai dengan pengaturan parameter Active solution platform.
Klik kanan proyek dan pilih Properties. Di jendela yang muncul, pilih Configuration Properties > C/C++ > General, klik Additional Include Directories, dan kemudian pilih /B. Salin file header di direktori
includeke direktori /B.
Klik kanan proyek dan pilih Properties. Di jendela yang muncul, pilih Configuration Properties > Linker > General, klik Additional Library Directories, dan kemudian pilih /A.
Klik kanan proyek dan pilih Properties. Di jendela yang muncul, pilih Configuration Properties > Linker > Input, klik Additional Dependencies, dan kemudian pilih ONSClient4CPP.lib.
Klik kanan proyek dan pilih Properties. Di jendela yang muncul, pilih Configuration Properties > C/C++ > Preprocessor, dan kemudian klik Preprocessor Definitions untuk menambahkan makro WIN32.
Gunakan SDK untuk C++ di lingkungan selain Visual Studio 2015
Ikuti langkah-langkah sebelumnya untuk mengonfigurasi proyek Anda berdasarkan lingkungan Visual Studio 2015.
Instal vc_redist.x64.
PentingUntuk mencegah pengaturan yang kompleks, Anda dapat menggunakan demo SDK untuk C++ yang telah dikonfigurasi sebelumnya. Anda dapat mengunduh dan mengekstrak paket SDK untuk C++, masuk ke direktori demo, dan membuka proyek di Visual Studio 2015.
Gambar-gambar berikut memberikan contoh.



Setelah melakukan operasi sebelumnya, lingkungan siap dikompilasi. Kemudian, Anda dapat mengklik Build untuk mengompilasi program yang dapat dieksekusi dan menyalin file DLL ke direktori tempat program yang dapat dieksekusi berada atau ke direktori sistem untuk menjalankan program.