本项目采用了 Microsoft 开源行为准则。有关更多信息,请参阅 行为准则常见问题解答 或联系 [email protected] 询问任何其他问题或提出评论。
uAMQP
uAMQP
是一个通用目的的 C 库,用于 AMQP 1.0。
目标为:
- 符合标准
- 优化低内存占用
- 尽可能实现可移植性
目前主要仅是客户端实现。尽管大部分标准是对称的,但也存在不对称的部分,如 SASL 握手。
uAMQP
的服务器端支持(例如 SASL)目前还在进行中。
依赖
uAMQP
使用 azure-c-shared-utility
,这是一个提供常用功能(字符串操作、列表操作、IO 等)的 C 库。azure-c-shared-utility
在此处可用:[https://github.com/Azure/azure-c-shared-utility](https://github.com/Azure/azure-c-shared-utility) 并作为子模块使用。
请注意,azure-c-shared-utility 依赖于几个库(libssl-dev、libuuid-dev、libcurl-dev)。
在 Ubuntu 发行版上,建议通过运行以下命令安装所有所需的软件包:
sudo apt-get update
sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev
azure-c-shared-utility 提供了几个 tlsio 实现,其中一些为:
- tlsio_schannel - 仅在 Windows 上运行
- tlsio_openssl - 依赖于已安装的 OpenSSL
- tlsio_wolfssl - 依赖于已安装的 WolfSSL
- tlsio_mbedtls
- ...
有关配置 azure-c-shared-utility 的更多信息,请参阅:[https://github.com/Azure/azure-c-shared-utility](https://github.com/Azure/azure-c-shared-utility)
uAMQP
使用 cmake 配置构建文件。
为了支持 WebSockets,uAMQP
依赖于 azure-c-shared-utility 提供的支持。
配置
构建
- 通过以下方式克隆
azure-uamqp-c
git clone --recursive https://github.com/Azure/azure-uamqp-c.git
-
在
azure-uamqp-c
文件夹下创建一个名为cmake
的文件夹 -
进入
cmake
文件夹并运行
cmake ..
- 构建
cmake --build .
安装与使用
可选,您也可以选择在您的机器上安装 azure-uamqp-c
-
进入
cmake
文件夹并运行cmake -Duse_installed=ON ../
cmake --build . --target install
或使用以下命令在每个平台上进行安装
在 Linux 上
sudo make install
在 Windows 上
msbuild /m INSTALL.vcxproj
-
在您的项目中使用它(如果已安装)
find_package(uamqp REQUIRED CONFIG) target_link_library(yourlib uamqp)
这要求 azure-c-shared-utility(通过 CMake)已在您的机器上安装。
若要运行测试,则要求 umock-c、azure-ctest 和 azure-c-testrunnerswitcher(通过 CMake)已在您的机器上安装。
构建测试
为了构建单元测试,请使用
cmake .. -Drun_unittests:bool=ON
为了构建端到端测试,请使用
cmake .. -Drun_e2e_tests:bool=ON
请注意,某些端到端测试(例如与事件中心或物联网中心通信)需要设置环境变量,以便测试获得它们需要连接的端点信息。
切换分支
在任何分支切换(例如 git checkout)之后,还应该通过以下方式更新子模块引用:
git submodule update --init --recursive
样例
样例文件位于 azure-uamqp-c/samples 文件夹中
- 向 Event Hub 发送消息
- 从 Event Hub 接收消息
- 使用 CBS 向 IoT Hub 发送消息
- 使用 WebSocket over AMQP 向 IoT Hub 发送消息
- 使用原始 TCP 的简单客户端/服务器样例