閱讀410 返回首頁    go iPhone_iPad_Mac_apple


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 的靜態庫和動態庫。

    1. lib-boost-share/
    2. libonsclient4cpp.so
    3. lib-boost-static/
    4. libonsclient4cpp.a

    Windows SDK 子目錄如下,是64 位係統下 SDK 的 dll 庫。如果沒有安裝 Visual Studio 2015 環境下,需要拷貝安裝vc_redist.x64這是Visual C++ 2015的運行時環境。

    1. 64/
    2. 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 即可,無需執行其他操作。使用方式如下:

  1. cd aliyun-mq-linux-cpp-sdk //下載的SDK解壓後的路徑
  2. cd example //進入demo目錄,修改demo文件,填入自己申請的topic,key相關的信息
  3. g++ -static -I ../include -L ../lib/lib-boost-static ProducerExampleForEx.cpp -lonsclient4cpp -lpthread –ldl

注意: 完全的靜態鏈接請確保機器上安裝了 libstdc++,pthread 等相關的靜態庫,默認安裝的 libstdc++ 是沒有安裝靜態庫的,所以需要通過 yum 或者 > apt-get 來安裝相關的靜態庫。此外使用如上方式會出現一些警告信息如下:

  1. warning: Using 'gethostbyaddr' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

建議最佳的方式,不要使用完全的靜態鏈接,而是隻靜態鏈接 lonsclient4cpp,其他庫動態鏈接即可。使用方式如下:

  1. 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 庫的依賴需要做如下工作:

  1. 下載 boost 1.62.0 版本:

    boost 1.62.0

  2. 解壓 boost 1.62.0:

    tar —bzip2 -xf /path/to/boost_1_62_0.tar.bz2
  3. 安裝 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

  4. 執行 ldconfig -v|grep libboost。如果有相關的輸出表明 boost 動態庫在動態庫搜索路徑中。

  5. 生成可執行文件時,需要鏈接 boost 動態庫和 MQ 動態庫。方法如下:

    1. cd aliyun-mq-linux-cpp-sdk //下載的 SDK 解壓後的路徑
    2. cd example //進入 demo 目錄,修改 demo 文件,填入自己在 MQ 控製台申請的 Topic,key 相關的信息
    3. g++ -Wall -Wno-deprecated -L ../lib/lib-boost-share/ -I ../include/ ProducerExampleForEx.cpp -lonsclient4cpp -lboost_system -lboost_thread -lboost_chrono -lpthread
    4. export LD_LIBRARY_PATH="../lib/lib-boost-share/" //添加動態載入的搜索路徑
    5. ./a.out //運行程序

Windows C++ SDK 使用

Visual Studio 2015 環境下使用 C++ SDK

  1. 使用 Visual Studio 2015 創建自己的項目。

  2. 右鍵單擊項目選擇屬性。選擇配置管理器,設置活動解決方案配置release;設置活動解決方案平台x64

  3. 右鍵單擊項目選擇屬性>配置屬性>常規>輸出目錄/A。按照活動解決方案平台的設置,拷貝 64 位 lib 目錄下的所有文件到輸出目錄 /A

  4. 右鍵單擊項目選擇屬性>配置屬性>C/C++-常規>附加包含目錄/B。拷貝 include 目錄下的頭文件到包含目錄: /B

  5. 右鍵單擊項目選擇屬性>配置屬性>鏈接>常規>附加庫目錄/A

  6. 右鍵單擊項目選擇屬性>配置屬性>鏈接>輸入>附加依賴項ONSClient4CPP.lib

非 Visual Studio 2015環境下使用 C++ SDK

  1. 首先需要按照 Visusal Studio 2015 的環境來配置,配置過程同上。

  2. 右鍵單擊項目選擇屬性>配置屬性>C/C++-代碼生成>運行時檢查,選擇默認

  3. 右鍵單擊項目選擇屬性>配置屬性>清單工具>輸入和輸出>嵌入清單,選擇

  4. 安裝vc_redist.x64。

最後更新:2016-12-02 15:26:37

  上一篇:go Spring 集成__Java SDK_TCP 接入(專業)_消息隊列 MQ-阿裏雲
  下一篇:go 發送普通消息__C/C++ SDK_TCP 接入(專業)_消息隊列 MQ-阿裏雲