本文介绍了C++ SDK的安装方法、示例代码以及如何使用C++ SDK发布事件。
SDK简介
事件总线EventBridge的SDK分为管控API SDK和数据API SDK,示例代码有所不同。
管控API SDK:对控制台页面进行操作使用的SDK。
数据API SDK:事件数据的通道,目前只有发送事件(PutEvents)属于此类。
前提条件
您已完成以下操作:
环境准备
安装支持C++ 11或更高版本的编译器:
Windows:Visual Studio 2015或以上版本。更多信息,请参见安装Visual Studio。
Linux:GCC 4.9或以上版本。更多信息,请参见下载GCC。
安装CMake 3.0或以上版本。更多信息,请参见安装CMake。
操作系统具有4 GB或以上内存。
安装以下必备依赖库。
安装C++ SDK前需先安装必备的依赖库boost、openssl和cpprestsdk。不同系统下的安装方法如下:
macOS系统建议使用Homebrew安装。
brew install boost cpprestsdk openssl
Linux系统建议使用yum安装或者apt-get安装。
yum install boost-devel openssl-devel
说明暂不支持通过yum安装cpprestsdk。
# install boost sudo add-apt-repository ppa:mhier/libboost-latest -y sudo apt-get update sudo apt-get install libboost-all-dev sudo apt-get install libcpprest-dev libcurl4-openssl-dev libssl-dev
Windows系统建议使用vcpkg安装。
vcpkg install boost openssl-windows cpprestsdk
管控API SDK
安装SDK
Linux系统
执行以下命令从GitHub克隆源码。
git clone https://github.com/alibabacloud-sdk-cpp/dara-openapi.git
执行以下命令进入目录eventbridge安装SDK。
cd dara-openapi && sh scripts/install.sh
Windows系统
执行以下命令从GitHub克隆源码。
git clone https://github.com/alibabacloud-sdk-cpp/dara-openapi.git
在项目根目录下创建空文件夹cmake_build。
在CMake中执行以下操作。
选择Browse Source为源代码目录alibabacloud_event_bridge。
选择Browse build为构建目录cmake_build。
单击configure。
单击generate,构建VS解决方案。
在目录cmake_build中,使用Visual Studio打开解决方案darabonba_core.sln。
选择构建Release输出,在配置管理器选中INSTALL,然后选择 。
SDK示例
您可以在OpenAPI门户通过调用API接口,自动生成对应的SDK示例。具体操作,请参见如何自动生成SDK示例。
数据API SDK
安装SDK
Linux系统
执行以下命令从GitHub克隆源码。
git clone https://github.com/alibabacloud-sdk-cpp/eventbridge.git
执行以下命令进入目录eventbridge安装SDK。
cd eventbridge && sh scripts/install.sh
Windows系统
执行以下命令从GitHub克隆源码。
git clone https://github.com/alibabacloud-sdk-cpp/eventbridge.git
在项目根目录下创建空文件夹cmake_build。
在CMake中执行以下操作。
选择Browse Source为源代码目录alibabacloud_event_bridge。
选择Browse build为构建目录cmake_build。
单击configure。
单击generate,构建VS解决方案。
在目录cmake_build中,使用Visual Studio打开解决方案darabonba_core.sln。
选择构建Release输出,在配置管理器选中INSTALL,然后选择 。
SDK示例
数据API SDK目前只包含发布事件(PutEvents),如需使用C++ SDK发布一个或多个事件,请参考以下示例代码。
#include <alibabacloud/event_bridge.hpp>
#include <alibabacloud/sample.hpp>
#include <darabonba/console.hpp>
#include <darabonba/core.hpp>
#include <darabonba/util.hpp>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
using namespace Alibabacloud_Sample;
Alibabacloud_EventBridge::Client Alibabacloud_Sample::Client::createClient() {
shared_ptr<Alibabacloud_EventBridge::Config> config =
make_shared<Alibabacloud_EventBridge::Config>();
SetAccessKeyId(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")).
SetAccessKeySecret(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")).
SetEndpoint("<endpoint>")
return Alibabacloud_EventBridge::Client(config);
}
void Alibabacloud_Sample::Client::PutEvents(
shared_ptr<Alibabacloud_EventBridge::Client> client) {
shared_ptr<Alibabacloud_EventBridge::CloudEvent> event =
make_shared<Alibabacloud_EventBridge::CloudEvent>();
event->datacontenttype = make_shared<string>("application/json");
event->data = make_shared<vector<uint8_t>>(
Darabonba_Util::Client::toBytes(make_shared<string>("test")));
event->id = make_shared<string>("a5074581-7e74-4e4c-868f-47e7afdf8445");
event->source = make_shared<string>("acs.oss");
event->specversion = make_shared<string>("1.0");
event->type = make_shared<string>("oss:ObjectCreated:PostObject");
event->time = make_shared<string>("2020-08-24T13:54:05.965Asia/Shanghai");
event->subject = make_shared<string>("1.0");
event->type = make_shared<string>(
"acs:oss:cn-hangzhou:1234567:xls-papk/game_apk/123.jpg");
event->extensions = make_shared<map<string, string>>(
map<string, string>({{"aliyuneventbusname", "demo-bus"}}));
try {
shared_ptr<Alibabacloud_EventBridge::PutEventsResponse> resp =
make_shared<Alibabacloud_EventBridge::PutEventsResponse>(
client->putEvents(
make_shared<vector<Alibabacloud_EventBridge::CloudEvent>>(
vector<Alibabacloud_EventBridge::CloudEvent>({event}))));
Darabonba_Console::Client::log(
make_shared<string>("--------------------Publish event to the aliyun "
"EventBus--------------------"));
Darabonba_Console::Client::log(
make_shared<string>(Darabonba_Util::Client::toJSONString(
make_shared<map<string, boost::any>>(resp->toMap()))));
} catch (std::exception &error) {
Darabonba_Console::Client::log(error.message);
}
}
void Alibabacloud_Sample::Client::main(shared_ptr<vector<string>> args) {
shared_ptr<Alibabacloud_EventBridge::Client> client =
make_shared<Alibabacloud_EventBridge::Client>(Client::createClient());
Client::PutEvents(client);
}