Bu konu, Message Queue for Apache RocketMQ hizmetine bağlanmak için C++ SDK v1.x.x ortamının nasıl hazırlanacağını açıklar. Bu sayede SDK'yı kullanarak mesaj gönderebilir ve alabilirsiniz.
Başlamadan önce:
Bu konu yalnızca C++ SDK v1.x.x için geçerlidir.
Kodunuzun kullanacağı konuları ve grup kimliklerini konsolda oluşturun. Uygulamanızda mesaj etiketlerini özelleştirebilirsiniz. Kaynakların nasıl oluşturulacağı hakkında daha fazla bilgi için bkz. Kaynak oluşturma.
Message Queue for Apache RocketMQ kullanan uygulamalar ECS örneklerinde dağıtılmalıdır.
C++ için Tablestore SDK'yı indirin
C++ SDK, aynı arabirimlere sahip Windows ve Linux işletim sistemlerini destekler. Linux'ta CentOS 6 (RHEL 6) ve CentOS 7 (RHEL 7) serileri desteklenir. C++ SDK'yı indirme hakkında daha fazla bilgi için bkz. C++ TCP istemci SDK sürüm notları.
İndirme tamamlandıktan sonra paketi açın. Dizin yapısı aşağıdaki gibidir:
-
demo/ (yalnızca Windows için)
Oluşturulmuş bir Windows C++ demosu içerir.
-
example/
Örnekler arasında normal mesaj gönderme, tek yönlü mesaj gönderme, sıralı mesaj gönderme, normal mesaj tüketme ve sıralı mesaj tüketme yer alır. Linux ayrıca
Makefiledosyasınıexamplederlemesi ve yönetimi için içerir. -
include/
Bu dizin, kendi programlarınız için gereken üstbilgi dosyalarını içerir.
-
lib/
-
Linux SDK'nın aşağıdaki alt dizinleri, 64 bitlik statik ve dinamik kütüphanelerdir.
lib-boost-share/ libonsclient4cpp.so lib-boost-static/ libonsclient4cpp.a -
Windows SDK alt dizini aşağıdaki gibidir ve 64 bitlik sistemde SDK'nın dll kütüphanesini içerir. Visual Studio 2015 ortamı yüklü değilse
vc_redist.x64kurulumunu kopyalayın. Bu, Visual C++ 2015 için çalışma zamanı ortamıdır.64/ vc_redist.x64
-
-
SDK_GUIDE.pdf
SDK ortamının nasıl hazırlanacağına ilişkin belgeleri ve sık sorulan soruları (SSS) içerir.
-
changelog
Yeni sürümlerdeki hata düzeltmelerini ve yeni özellikleri içerir.
Linux C++ SDK
2 Aralık 2016 tarihinden itibaren Linux CPP sürümü, yüksek performanslı boost kütüphanesine (sürüm 1.62.0) dayanır; bu durum CPU kaynak kullanım oranını azaltmanın yanı sıra işlem verimliliğini de artırır. Şu anda temel olarak dört kütüphaneye dayanmaktadır: boost_system, boost_thread, boost_chrono ve boost_filesystem. Statik kütüphane ve dinamik kütüphane olmak üzere iki çözüm mevcuttur.
Statik Çözüm
ApsaraMQ for RocketMQ kütüphane dosyası lib/lib-boost-static dizinindedir. Boost kütüphanesi statik olarak libonsclient4cpp.a dosyasına bağlanır. Boost kütüphanesine bağlı olmayan iş tarafları için statik kütüphane çözümü doğrudan seçilebilir. Statik kütüphane çözümünde ilgili boost kütüphanesi libonsclient4cpp.a dosyasına zaten bağlanmıştır. Derleme sırasında yalnızca libonsclient4cpp.a dosyasını bağlamanız yeterlidir, başka bir işlem gerekmez. Alanların nasıl ayarlanacağına ilişkin bir örnek aşağıdaki kodda verilmiştir:
cd aliyun-mq-linux-cpp-sdk // The path where the downloaded SDK is decompressed.
cd example // Go to the example directory, modify the example file, and enter the information about the topic and key that you created.
make static=1
Tam statik bağlantılar için makinede libstdc++, pthread ve diğer ilgili statik kütüphanelerin yüklü olduğundan emin olun. Varsayılan olarak libstdc++'nin statik kütüphaneleri yüklü değildir, bu nedenle ilgili statik kütüphaneleri yum veya apt-get aracılığıyla yüklemeniz gerekir.
Ek olarak, yukarıdaki yöntem kullanıldığında aşağıdaki gibi bazı uyarı mesajları görünecektir.
warning: Using 'gethostbyaddr' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
En iyi yaklaşım, tam statik bağlantı kullanmak yerine yalnızca onsclient4cpp'yi statik olarak bağlamak ve diğer kütüphaneleri dinamik olarak bağlamaktır. Alanların nasıl ayarlanacağına ilişkin bir örnek aşağıdaki kodda verilmiştir:
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
Ek olarak, GCC 5.x Dual ABI özelliğini tanıttığından, derleme bağlantıları sırasında -D_GLIBCXX_USE_CXX11_ABI=0 derleyici seçeneklerini ekleyin.
Dinamik çözümler
ApsaraMQ for RocketMQ kütüphane dosyası lib/lib-boost-share dizinindedir ve iş tarafının çalıştırılabilir dosyayı oluştururken boost dinamik kütüphanesini ve libonsclient4cpp.so dosyasını bağlaması gerekir. İş tarafı zaten boost kütüphanesine bağlıysa ve dinamik kütüphane çözümünü seçmesi gerekiyorsa, boost kütüphanesine bağlılık için aşağıdaki işlemlerin yapılması gerekir:
-
Boost 1.62.0'ı indirin.
-
Boost 1.62.0'ı açın.
tar --bzip2 -xf /path/to/boost_1_62_0.tar.bz2 -
Boost sürüm 1.62.0'ı yükleyin:
Boost 1.62.0 açıldıktan sonraki yola gidin:
cd path/to/boost_1_62_0Boost'u yapılandırın:
./bootstrap.shBoost'u derleyin:
./b2 link=shared runtime-link=sharedBoost'u yükleyin:
./b2 install
ldconfig -v|grep libboostkomutunu çalıştırın. İlgili çıktı varsa, boost dinamik kütüphanesi dinamik kütüphane arama yolundadır.-
Çalıştırılabilir bir dosya oluştururken boost dinamik kütüphanesini ve ApsaraMQ for RocketMQ dinamik kütüphanesini bağlamanız gerekir. Yöntem aşağıdaki gibidir.
cd aliyun-mq-linux-cpp-sdk // The path where the downloaded SDK is decompressed. cd example // Go to the example directory, modify the example file, and enter the topics and keys that you created in the Message Queue for Apache RocketMQ console. 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'te C++ SDK'yı kullanma
-
Visual Studio 2015'te bir proje oluşturun.
New Project seçeneğine tıklayın. New Project iletişim kutusunda Installed > Templates > Visual C++ > Win32 seçeneklerini belirleyin, ardından Win32 Console Application seçeneğini belirleyin ve projeyi oluşturmak için OK seçeneğine tıklayın.
Win32 Application Wizard iletişim kutusunda proje türünün Console application olduğunu onaylayın, ardından bir sonraki yapılandırma adımına geçmek için Next seçeneğine tıklayın.
Application type ayarını Console application olarak belirleyin, Empty project seçeneğini işaretleyin ve boş bir proje oluşturmak için Finish seçeneğine tıklayın.
Projeye sağ tıklayın ve Property > Configuration Manager seçeneklerini belirleyin. Active solution configuration ayarını release ve Active solution platform ayarını x64 olarak belirtin.
-
Projeye sağ tıklayın ve Property > Configuration Properties > General seçeneklerine gidin. Output Directory ayarını /A olarak belirleyin. Active solution platform ayarına göre 64 bitlik lib dizinindeki tüm dosyaları /A çıkış dizinine kopyalayın.
Platform Toolset ayarını Visual Studio 2015 - Windows XP (v140_xp) olarak belirleyin. Output Directory değeri
$(SolutionDir)$(Platform)\$(Configuration)\şeklindedir ve derlemeden sonra otomatik olarak oluşturulur. ONSClient4CPP.dll, ONSClient4CPP.lib ve ONSClient4CPP.pdb dosyalarını SDK'nın lib dizininden bu derleme çıkış dizinine kopyalayın. -
Projeye sağ tıklayın ve Property > Configuration Properties > C/C++ > General seçeneklerine gidin. Additional Include Directories ayarını /B olarak belirleyin.
includedizinindeki üstbilgi dosyalarını /B dizinine kopyalayın.SDK'nın include dizini yolunu ekleyin (örneğin,
E:\aliyun-mq-windows-cpp-sdk\include). Alternatif olarak başka bir dizin belirtebilir ve SDK include dosyalarını buraya kopyalayabilirsiniz. Windows 7'de VS2015 kullanıyorsanız Windows Kits ucrt yolunu da ekleyin, örneğinC:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt. -
Projeye sağ tıklayın ve Property > Configuration Properties > Linker > General seçeneklerine gidin. Additional Library Directories ayarını /A olarak belirleyin.
Aşağıdaki yolları ekleyin:
SDK'nın
lib\64dizini yolu (ilgili DLL dosyalarını içerir).Windows 7'de VS2015 kullanıyorsanız Windows Kits ucrt\x64 yolunu da ekleyin, örneğin
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10150.0\ucrt\x64.
Projeye sağ tıklayın ve Property > Configuration Properties > Linker > Input seçeneklerine gidin. Additional Dependencies ayarını ONSClient4CPP.lib olarak belirleyin.
-
Projeye sağ tıklayın ve Property > Configuration Properties > C/C++ > Preprocessor seçeneklerine gidin. Preprocessor Definitions alanına WIN32 makrosunu ekleyin.
Preprocessor Definitions ayarını
NDEBUG;WIN32_CONSOLE;%(PreprocessorDefinitions)olarak belirleyin.
Visual Studio 2015 dışındaki ortamlarda C++ SDK'yı kullanma
"Visual Studio 2015'te C++ SDK'yı kullanma" bölümündeki adımları izleyerek ortamınızı yapılandırın.
-
Visual C++ 2015 çalışma zamanı olan vc_redist.x64 öğesini yükleyin.
ÖnemliKarmaşık yapılandırmalardan kaçınmak için önceden yapılandırılmış SDK demosunu kullanabilirsiniz. SDK'yı indirip açtıktan sonra demo dizinine gidin ve projeyi Visual Studio 2015'te açın.
Solution Explorer'da demo projesine sağ tıklayın ve özellikler sayfasını açmak için Properties seçeneğini belirleyin.
Configuration Properties > C/C++ > General seçeneklerini genişletin.
Additional Include Directories alanını düzenleyin ve
../../includeileC:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrtyollarını ekleyin.Ucrt yolundaki sürüm numarasını (örneğin
10.0.10150.0) makinenizde yüklü olan Windows SDK sürümüyle değiştirin.
Projeyi derlemek için Build seçeneğine tıklayın. Çalıştırılabilir dosyayı çalıştırmak için gerekli DLL'leri çalıştırılabilir dosyanın dizinine veya bir sistem dizinine kopyalayın.