410
微信
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-阿里云