librabbitmqc 0.0.5

librabbitmqc 0.0.5

测试已测试
Lang语言 CC
许可 MIT
发布上次发布2015年5月

7tomekTomasz Pluciennik 维护。



  • 作者
  • Alan Antonuk,VMware 和 Tony Garnock-Jones

RabbitMQ C AMQP 客户端库

简介

这是一个用于 RabbitMQ 代理 v2.0+ 的 C 语言 AMQP 客户端库。

关于库的公告定期在 rabbitmq-users 邮件列表上发布

最新稳定版本

rabbitmq-c 的最新稳定版可以在以下位置找到:

文档

0.5.0+ 版本的 API 文档可以在此处查看:

http://alanxz.github.io/rabbitmq-c/docs/0.5.0/

入门

构建和安装

先决条件

  • CMake v2.6 或更高版本
  • C 编译器(GCC 4.4+,clang 和 MSVC 已测试。其他编译器也可能工作)
  • 可选 使用 OpenSSL v0.9.8+ 以支持通过 SSL/TLS 连接到 RabbitMQ
  • 可选 使用 POpt 构建一些实用的命令行工具
  • 可选 使用 XmlTo 构建实用命令行工具的手册页
  • 可选 使用 Doxygen 构建开发人员 API 文档

下载并解压缩源代码到目录后,在大多数系统上构建 rabbitmq-c 的命令如下

mkdir build && cd build
cmake ..
cmake --build [--config Release] .

在多配置生成器中使用 --config Release 标志,例如 Visual Studio 或 XCode。

还可以将 CMake GUI 工具指向源树根目录下的 CMakeLists.txt,生成构建项目或 IDE 工作区

安装库并可选地指定前缀可以这样做

cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
cmake --build . [--config Release] --target install

有关 CMake 的更多信息,可以在其 FAQ 上找到 (http://www.cmake.org/Wiki/CMake_FAQ)

CMake 可以传递给其他有趣的标志

  • BUILD_EXAMPLES=ON/OFF 切换构建示例。默认为 ON。
  • BUILD_SHARED_LIBS=ON/OFF 切换将 rabbitmq-c 构建为共享库。默认为 ON。
  • BUILD_STATIC_LIBS=ON/OFF 切换将 rabbitmq-c 构建为静态库。默认为 OFF。
  • BUILD_TESTS=ON/OFF 切换构建测试代码。默认为 ON。
  • BUILD_TOOLS=ON/OFF 切换构建命令行工具。默认情况下,如果构建系统可以找到 POpt 标头和库,则为 ON。
  • BUILD_TOOLS_DOCS=ON/OFF 控制构建命令行工具的手册页。默认情况下,如果 BUILD_TOOLS 为 ON 且构建系统可以找到 XmlTo 工具,则此选项为 ON。
  • ENABLE_SSL_SUPPORT=ON/OFF 控制是否在 rabbitmq-c 中构建 SSL 支持。默认情况下,如果可以找到 OpenSSL 头文件和库,则此选项为 ON。
  • ENABLE_THREAD_SAFETY=ON/OFF 控制 OpenSSL 的线程安全性。默认情况下此选项为 ON。
  • BUILD_API_DOCS=ON/OFF - 控制是否构建 Doxygen API 文档,默认情况下此选项为 OFF

autotools

为了兼容性,项目维护了一个基于 GNU autotools 的构建系统。所需的工具包括 autoconf v2.59+、automake v1.9+、libtool v2.2+ 和 pkg-config。

然后按照标准的 autotools 构建过程构建 rabbitmq-c。

autoreconf -i
./configure
make
make install

运行示例

确保 RabbitMQ 或其他 AMQP 服务器在 localhost 上以 TCP 端口号 5672 运行。

在一个终端中,运行

./examples/amqp_listen localhost 5672 amq.direct test

在另一个终端中,

./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"

在监听器的终端窗口中应看到类似以下输出的内容

Delivery 1, exchange amq.direct routingkey test
Content-type: text/plain
----
00000000: 68 65 6C 6C 6F 20 77 6F : 72 6C 64                 hello world
0000000B:

使用 librabbitmq 编写应用程序

请参阅 examples 目录,其中包含使用 librabbitmq 库的简短示例。

线程

使用 librabbitmq,您不能在线程之间共享套接字、amqp_connection_state_t 或通道。librabbitmq 库是在考虑事件驱动、单线程应用程序的情况下构建的,尚未满足任何 pthread 应用程序的要求。

因此,您的应用程序应为每个线程打开一个 AMQP 连接(和相关套接字)。如果您的程序需要从多个线程访问 AMQP 连接或其任何通道,则完全负责设计和实现适当的锁定方案。拥有仅对需要 AMQP 服务的每个线程可用的连接通常会简单得多。