把RabbitMQ作为lua的api

1. 在Centos7 上安装部署RabbitMQ
(1)安装erlang环境
打开以下网址:
http://www.erlang.org/downloads 




下载最新版本的OTP源码:
OTP 19.3 Source File (102147031)


阿里云服务器需要安装依赖库:

 yum install  ncurses-devel.x86_64 gcc-c++.x86_64 openssl-devel.x86_64


解压后,输入:
./configure --prefix=/usr/erlang --without-javac
make
make install




通过输入以下来确认是否成功安装
cd /usr/erlang/bin
./erl




(2)安装rabbitMQ Server
打开以下网址:
http://www.rabbitmq.com/download.html




根据系统下载最新版本binary 二进制文件不要使用rpm包方式安装:
rpm安装会出现:
warning: ./rabbitmq-server-3.6.9-1.el7.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 6026dfca: NOKEY
error: Failed dependencies:
erlang >= R16B-03 is needed by rabbitmq-server-3.6.9-1.el7.noarch
socat is needed by rabbitmq-server-3.6.9-1.el7.noarch




使用tar -xvf ./xxx 解压包以后 cd 到 abbitmq_server-3.6.9/sbin 下输入./rabbitmq-server  就可以运行了。




运行RabbitMQ统计web:./rabbitmq-plugins enable rabbitmq_management
如果不是使用localhost登录web,需要编辑用户和权限,流程如下:
1. ./rabbitmqctl add_user admin admin
2. ./rabbitmqctl set_user_tags admin administrator




(3)安装RabbitMQ Client
打开以下网址:
https://github.com/alanxz/rabbitmq-c 




下載最新版本的Client C源碼




解壓后進入該目錄,編譯:


編譯有兩種方式:
方式1:
(由於cmake無法指定使用-fPIC選項,所以建議用標準的autoreconf,即方式2)
cmake ./CMakeLists.txt 
make    //生成的庫文件在 rabbitmq-c-master/librabbitmq 目錄下
make install
但是這樣仍然會有某些頭文件沒有放到/usr/local/include/下,所以需要
在libbrabbitmq下cp ./*.h  /usr/local/include/


方式2:參考 https://github.com/alanxz/rabbitmq-c#running-the-examples 說明
autoreconf -i
./configure ./configure --with-pic --enable-static(生成.a庫, 帶-fPIC)
make (這裡不會生成產物)
make install (產物在/usr/local/lib/librabbitmq.a)


創建rabbitmq.i 文件。格式如下:




%module rabbitmq
%{
#include "include/amqp.h"
#include "include/amqp_framing.h"
#include "include/amqp_hostcheck.h"
#include "include/amqp_openssl_bio.h"
#include "include/amqp_openssl_hostname_validation.h"
#include "include/amqp_socket.h"
#include "include/amqp_ssl_socket.h"
#include "include/amqp_table.h"
#include "include/amqp_tcp_socket.h"
#include "include/amqp_time.h"
#include "include/config.h"
%}
%include "include/amqp.h"
%include "include/amqp_framing.h"
%include "include/amqp_hostcheck.h"
%include "include/amqp_openssl_bio.h"
%include "include/amqp_openssl_hostname_validation.h"
%include "include/amqp_socket.h"
%include "include/amqp_ssl_socket.h"
%include "include/amqp_table.h"
%include "include/amqp_tcp_socket.h"
%include "include/amqp_time.h"
%include "include/config.h"


使用swig,导出静态接口:
swig -lua rabbitmq.i 




得到靜態庫之後,需要鏈接成為.so,鏈接時記得需要加上ssl依賴(-lrabbitmq/-lcrypto/-lssl)


然后就能得到rabbitmq.so了。放到lua环境中测试吧。


rabbitmq常见问题解决:

1. 如何一句话删除所有queue

rabbitmqadmin -f tsv -q list queues name | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done


2. 创建cluster注意点:

加入有rabbit1和rabbit2

需要在rabbit2上先stop_app 然后再join cluster. 此时rabbit1 的rabbitserver必须是跑着的。

还需要在hosts文件上编辑host的IP



3. 如果出现erl not found 则需要将/usr/erlang/bin/erl 的执行文件软链到/usr/bin





猜你喜欢

转载自blog.csdn.net/johnhill_/article/details/70310086