RabbitMQ C 客户端收发数据实例解析

本文通过C语言实现RabbitMQ客户端,详细解析AMQP协议下的数据收发过程,帮助理解网络编程中的消息队列应用。
摘要由CSDN通过智能技术生成
rabbitmq-c客户端,github地址:https://github.com/alanxz/rabbitmq-c
rabbitmq-c是一个C语言操作的AMQP客户端库,用来与RabbitMQ broker进行交互

Building and installing:
需要:CMake2.6或以上版本
1、下载安装包后解压,进入主目录,
2、mkdir build && cd build 
3、cmake ..
4、cmake --build . 
完成后,build目录下会出现librabbitmq、examples 和 tests 子目录。其中librabbitmq中包含生成的librabbitmq.so等文件;examples中包含amqp_bind、amqp_consumer、amqp_exchange_declare、amqp_listen、amqp_listenq、amqp_producer、amqp_rpc_sendstring_client、amqp_sendstring 和 amqp_unbind 可执行文件。

运行实例:
在一个terminal中,运行
./examples/amqp_listen localhost 5672 amq.direct test
四个参数分别为域名、端口、exchange、bindingkey

另一个terminal中,运行
./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"
五个参数分别为域名、端口、exchange、bindingkey 发送字符

会在监听的terminal中出现如下打印:
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:


附上代码解析:

 amqp_listen.c

#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <amqp.h>
#include <amqp_tcp_socket.h>

#include <assert.h>

#include "utils.h"

int main(int argc, char const *const *argv) {
  char const *hostname;
  int port, status;
  char const *exchange;
  char const *bindingkey;
  amqp_socket_t *socket = NULL;
  amqp_connection_state_t conn;

  amqp_bytes_t queuename;

  if (argc < 5) {
    fprintf(stderr, "Usage: amqp_listen host port exchange bindingkey\n");
    return 1;
  }

  hostname = argv[1];
  port = atoi(argv[2]);
  exchange = argv[3];
  bindingkey = argv[4];

  /*分配并初始化一个新的amqp_connection_state_t对象,用该函数创建的
  amqp_connection_state_t对象需要用amqp_destroy_connection()函数来释放*/
  conn = amqp_new_connection();

  /*创建一个新的TCP socket
  需调用amqp_connection_close()释放socket资源*/
  socket = amqp_tcp_socket_new(conn);
  if (!socket)
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值