使用VS 2010编译RabbitMQ的c库
环境准备
- 下载rabbitmq-c的源代码:https://github.com/alanxz/rabbitmq-c
- 下载CMake工具:https://cmake.org/
生成VS 2010工程文件
- 启动CMake GUI程序
- 点击Configure按钮
- 在出现的IDE选择器中,选择VC 2010
- 如果出现错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 进入VC的bin目录,将cvtres.exe文件改名,再次点击Configure
- 如果出现错误:SSL库找不到之类的
- 将UI上出现的ENABLE_SSL_SUPPORT设置为DISABLE
- 当Configure正确后,再点击Generate,将会生成VC 2010的工程文件
用VC 2010打开工程
- 生成的文件结构如下
- 用VC2010打开工程文件后,如下
- 在VC中,按F7,全部编译
- 正常会编译通过
生成库说明
- rabbitmq-c/build/librabbitmq/Debug/rabbitmq.4.dll 动态链接库
- rabbitmq-c/build/librabbitmq/Debug/rabbitmq.4.lib 静态链接库
测试
- CMD命令行,进入 rabbitmq-c/build/example/Debug目录
- amqp_listen.exe localhost 5672 amq.direct "test queue" 启动消费程序,进行监听,当有消息进入的时候,会打印消息内容到终端屏幕上
- 再次启动一个CMD,执行
- amqp_sendstring localhost 5672 amq.direct "test queue" "hello world",当执行完毕后,会在amqp_listen的屏幕上,打印hellow world
- 再次其对应一个CMD,执行
- amqp_producer localhost 5672 100 1000 将会以每秒100个消息,共发送1000个消息到amqp_listen中
- amqp_listen将会显示共1000个小时的信息,由于amqp_listner的代码中,只有1个线程以阻塞模式处理消息,一般的消费速度只有40/秒,因此可以看到amqp_listen会持续性的在cmd界面中输出消息内容
重要概念
- 发送消息的时候,不能直接将消息发送到队列中,而是发送到exchange,指定routing key。
- 接收消息的时候,建立队列,供自己消费,同时将该队列使用routing key绑定到指定的exchange中。
- 新建立的每个队列,都会以队列名字作为routing key,自动绑定到空字符串的exchang中。因此发送给空字符串的exchange,如果routing key设置为了某个队列名,消息会路由到该队列上。