阅读410 返回首页    go 微信


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-阿里云