按照这里介绍的方法,先安装CMake
解压,进入解压后的目录
mkdir build && cd build # 这一步是在rabbitmq-c的根目录下创建一个build子目录
cmake .. # 这一步是让cmake根据../CMakeList.txt,即rabbitmq-c的根目录下的CMakeList.txt创建Makefile文件,Makefile文件会被创建到build目录中
cmake --build . # 这一步是真正的build rabbitmq-c库的,注意,不要漏掉结尾的点 '.'
完成后,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 可执行文件。
这里有rabbitmq-c的example使用说明,和使用librabbitmq的简单说明。
关于amqp_open_socket Connection refused的错误提示
原因在于,使用说明中提到这样一句:
Arrange for a RabbitMQ or other AMQP server to be running on localhost at TCP port number 5672.
即,在运行example之前,要起Rabbitmq服务,监听在 localhost的5672端口,然后下面的操作才能正常工作。否则,会遇到错误提示 “Opening socket: Connection refused”
In one terminal, run
./examples/amqp_listen localhost 5672 amq.direct test
In another terminal,
./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"
You should see output similar to the following in the listener's terminal window:
Result 1
Frame type 1, channel 1
Method AMQP_BASIC_DELIVER_METHOD
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:
事实上,./examples/amqp_listen localhost 5672 amq.direct test 并不是真正起一个rabbitmq的服务,并监听在localhost:5672,而是模拟真正的rabbitmq server:如果在5672端口收到正确的数据,则打印相应的信息。其实这个模拟的server可以不用起,./examples/amqp_sendstring localhost 5672 amq.direct test "hello world" 也可以成功往 localhost:5672 发数据。