AzureIoTuAmqp 1.10.0

AzureIoTuAmqp 1.10.0

Jeremy BobotekEwerton Scaboro Da SilvaJelani BrandonRajeev MassandDane Walton 维护。



 
依赖
AzureMacroUtils= 1.4.0
AzureuMockC= 1.4.0
AzureIoTUtility= 1.10.0
 

  • Microsoft 提供

本项目采用了 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

  1. 进入 cmake 文件夹并运行

    cmake -Duse_installed=ON ../
    
    cmake --build . --target install
    

    或使用以下命令在每个平台上进行安装

    在 Linux 上

    sudo make install
    

    在 Windows 上

    msbuild /m INSTALL.vcxproj
    
  2. 在您的项目中使用它(如果已安装)

    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 的简单客户端/服务器样例