C/C++ SDK 環境準備__C/C++ SDK_TCP 接入(專業)_消息隊列 MQ-阿裏雲
用 C++ SDK 方式接入 MQ,需要完成以下準備工作。
注意:
代碼裏涉及到的 Topic, Producer ID, Consumer ID,需要到 MQ 控製台上創建。 Message Tag 可以完全由應用自定義,具體創建過程可參考 申請MQ資源。
使用 MQ 服務的應用程序需要部署在阿裏雲 ECS 上。
下載 SDK
CPP 支持 Windows 和 Linux 兩個跨平台的 SDK,而且接口完全一致。下載依賴 SDK 包鏈接:
下載完成後進行解壓,會有如下目錄結構:
- example/
- include/
- lib/
- SDK_GUIDE.pdf
- release note.txt
上麵的目錄和文件的作用如下:
example:包含了普通消息發送、Oneway消息發送、順序消息發送、普通消息消費、順序消息消費等例子,Linux下還包含了Makefile用於example的編譯和管理。
include: 用戶自己編寫的程序需要 include 的頭文件。
lib: Linux SDK 子目錄如下,分別是 64 的靜態庫和動態庫。
lib-boost-share/
libonsclient4cpp.so
lib-boost-static/
libonsclient4cpp.a
Windows SDK 子目錄如下,是64 位係統下 SDK 的 dll 庫。如果沒有安裝 Visual Studio 2015 環境下,需要拷貝安裝
vc_redist.x64
這是Visual C++ 2015的運行時環境。64/
vc_redist.x64
SDK_GUIDE.doc: SDK環境準備文檔和一些FAQ。
release note.txt: 新版本發布解決的問題和引入的新特性列表。
Linux C++ SDK 使用
自2016.12.02開始, Linux CPP 版本依賴了高性能 boost 庫(1.62.0版本),不僅降低了 CPU 資源占用率,而且提高了運行效率。目前主要依賴了 boost_system,boost_thread,boost_chrono 三個庫。我們提供了靜態庫和動態庫兩種解決方案:
靜態解決方案
MQ 庫文件在 lib/lib-boost-static 目錄下,boost 庫靜態鏈接到 libonsclient4cpp.a 中。對於沒有依賴 boost 庫的業務方,可以直接選用靜態庫方案。靜態庫方案中,相應的boost庫已經鏈接到 ibonsclient4cpp.a,編譯時隻需要鏈接 libonsclient4cpp.a 即可,無需執行其他操作。使用方式如下:
cd aliyun-mq-linux-cpp-sdk //下載的SDK解壓後的路徑
cd example //進入demo目錄,修改demo文件,填入自己申請的topic,key相關的信息
g++ -static -I ../include -L ../lib/lib-boost-static ProducerExampleForEx.cpp -lonsclient4cpp -lpthread –ldl
注意: 完全的靜態鏈接請確保機器上安裝了 libstdc++,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
建議最佳的方式,不要使用完全的靜態鏈接,而是隻靜態鏈接 lonsclient4cpp,其他庫動態鏈接即可。使用方式如下:
g++ -I ../include -L ../lib/lib-boost-static ProducerExampleForEx.cpp –Wl,-dn -lonsclient4cpp –Wl,-dy -lpthread –ldl
動態解決方案
MQ 庫文件在 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 版本:
1) cd path/to/boost_1_62_0
2) 配置 boost:./bootstrap.sh
3) 編譯 boost: ./b2 link=shared runtime-link=shared
4) 安裝 boost: ./b2 install
執行 ldconfig -v|grep libboost。如果有相關的輸出表明 boost 動態庫在動態庫搜索路徑中。
生成可執行文件時,需要鏈接 boost 動態庫和 MQ 動態庫。方法如下:
cd aliyun-mq-linux-cpp-sdk //下載的 SDK 解壓後的路徑
cd example //進入 demo 目錄,修改 demo 文件,填入自己在 MQ 控製台申請的 Topic,key 相關的信息
g++ -Wall -Wno-deprecated -L ../lib/lib-boost-share/ -I ../include/ ProducerExampleForEx.cpp -lonsclient4cpp -lboost_system -lboost_thread -lboost_chrono -lpthread
export LD_LIBRARY_PATH="../lib/lib-boost-share/" //添加動態載入的搜索路徑
./a.out //運行程序
Windows C++ SDK 使用
Visual Studio 2015 環境下使用 C++ SDK
使用 Visual Studio 2015 創建自己的項目。
右鍵單擊項目選擇屬性。選擇配置管理器,設置活動解決方案配置為 release;設置活動解決方案平台為x64。
右鍵單擊項目選擇屬性>配置屬性>常規>輸出目錄:/A。按照活動解決方案平台的設置,拷貝 64 位 lib 目錄下的所有文件到輸出目錄 /A。
右鍵單擊項目選擇屬性>配置屬性>C/C++-常規>附加包含目錄:/B。拷貝 include 目錄下的頭文件到包含目錄: /B。
右鍵單擊項目選擇屬性>配置屬性>鏈接>常規>附加庫目錄:/A。
右鍵單擊項目選擇屬性>配置屬性>鏈接>輸入>附加依賴項:ONSClient4CPP.lib。
非 Visual Studio 2015環境下使用 C++ SDK
首先需要按照 Visusal Studio 2015 的環境來配置,配置過程同上。
右鍵單擊項目選擇屬性>配置屬性>C/C++-代碼生成>運行時檢查,選擇默認。
右鍵單擊項目選擇屬性>配置屬性>清單工具>輸入和輸出>嵌入清單,選擇否。
安裝vc_redist.x64。
最後更新:2016-12-02 15:26:37
上一篇:
Spring 集成__Java SDK_TCP 接入(專業)_消息隊列 MQ-阿裏雲
下一篇:
發送普通消息__C/C++ SDK_TCP 接入(專業)_消息隊列 MQ-阿裏雲
子訂單信息__數據類型_API文檔_域名-阿裏雲
獲取作業描述__SDK接口說明_Java版SDK_批量計算-阿裏雲
服務協議__產品概述_彈性 Web 托管-阿裏雲
實驗目標__快速入門_推薦引擎-阿裏雲
補丁管理__用戶指南_服務器安全(安騎士)-阿裏雲
TableInBatchWriteRowRequest__DataType_API 參考_表格存儲-阿裏雲
接入詳細說明__設備端接入手冊_阿裏雲物聯網套件-阿裏雲
學生考試成績預測__案例_機器學習-阿裏雲
用戶主密鑰(CMK)的狀態(KeyState)對API調用的影響__API 參考_密鑰管理服務-阿裏雲
多任務__操作指南_批量計算-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲