RabbitMQ是流行的開源消息隊列系統,是AMQP(Advanced Message Queuing Protocol高級消息隊列協議)的標準實現,用erlang語言開發。RabbitMQ據說具有良好的性能和時效性,同時還能夠非常好的支持集羣和負載部署,非常適合在較大規模的分佈式系統中使用,具體特性還在驗證中,待檢驗。由於項目需要,安裝並配置了RabbitMQ,服務器操作系統是CentOS7。具體步驟如下:
安裝依賴文件:
yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto
1.Erlang安裝配置
下載安裝包,地址http://www.erlang.org/downloads,我選擇的是otp_src_20.2.tar.gz。
然後解壓文件:
tar -xzvf otp_src_20.2.tar.gz
cd otp_src_20.2/
配置安裝路徑編譯代碼:
./configure --prefix=/mlr/resources/erlang
執行編譯結果:
make && make install
完成後進入/mlr/resources/erlang查看執行結果
cd /mlr/resources/erlang/bin
./erl
Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.2 (abort with ^G)
1>
當出現以上信息時表示安裝完成。然後輸入’halt().’退出即可。
然後在配置Erlang環境變量,vi /etc/profile文件,增加下面的環境變量:
#set erlang environment
export PATH=$PATH:/mlr/resources/erlang/bin
source /etc/profile 使得文件生效
在安裝Erlang過程中,可能會遇到以下問題,一般都是因爲系統中缺少相應的包引起的,缺少什麼包直接yum安裝即可。
2.下載安裝RabbitMq
下載地址: http://www.rabbitmq.com/
我下載的是rabbitmq-server-generic-unix-3.7.2.tar.xz
解壓文件
xz -d rabbitmq-server-generic-unix-3.7.2.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.7.2.tar
解壓後進入文件夾/mlr/resources發現多了個文件夾rabbitmq-server-3.7.2
然後在配置rabbitmq環境變量,vi /etc/profile文件,增加下面的環境變量:
#set rabbitmq environment
export PATH=$PATH:/mlr/resources/rabbitmq-server-3.7.2/sbin
source /etc/profile 使得文件生效
3.RabbitMQ服務啓動關閉
以上就已經完成了RabbitMq的安裝,怎麼啓動服務呢?
啓動服務:
cd sbin/
./rabbitmq-server -detached
查看服務狀態:
./rabbitmqctl status
Status of node rabbit@iZwz9ikfzd0p623rtyt3npZ …
[{pid,6226},
{running_applications,
[{rabbit,”RabbitMQ”,”3.7.2”},
{mnesia,”MNESIA CXC 138 12”,”4.15.2”},
{inets,”INETS CXC 138 49”,”6.4.5”},
{rabbit_common,
“Modules shared by rabbitmq-server and rabbitmq-erlang-client”,
“3.7.2”},
{ranch_proxy_protocol,”Ranch Proxy Protocol Transport”,”1.4.4”},
{ranch,”Socket acceptor pool for TCP protocols.”,”1.4.0”},
{ssl,”Erlang/OTP SSL application”,”8.2.3”},
{public_key,”Public key infrastructure”,”1.5.2”},
{asn1,”The Erlang ASN1 compiler version 5.0.4”,”5.0.4”},
{jsx,”a streaming, evented json parsing toolkit”,”2.8.2”},
{os_mon,”CPO CXC 138 46”,”2.4.4”},
{crypto,”CRYPTO”,”4.2”},
{recon,”Diagnostic tools for production use”,”2.3.2”},
{xmerl,”XML parser”,”1.3.16”},
{lager,”Erlang logging framework”,”3.5.1”},
{goldrush,”Erlang event stream processor”,”0.1.9”},
{compiler,”ERTS CXC 138 10”,”7.1.4”},
{syntax_tools,”Syntax tools”,”2.1.4”},
{sasl,”SASL CXC 138 11”,”3.1.1”},
{stdlib,”ERTS CXC 138 10”,”3.4.3”},
{kernel,”ERTS CXC 138 10”,”5.4.1”}]},
{os,{unix,linux}},
{erlang_version,
“Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:64] [hipe] [kernel-poll:true]\n”},
{memory,
[{connection_readers,0},
{connection_writers,0},
{connection_channels,0},
{connection_other,0},
{queue_procs,0},
{queue_slave_procs,0},
{plugins,5864},
{other_proc,25637392},
{metrics,184432},
{mgmt_db,0},
{mnesia,74152},
{other_ets,1965568},
{binary,136168},
{msg_index,32112},
{code,24920077},
{atom,1041593},
{other_system,9145810},
{allocated_unused,12886784},
{reserved_unallocated,0},
{strategy,rss},
{total,[{erlang,63143168},{rss,73658368},{allocated,76029952}]}]},
{alarms,[]},
{listeners,[{clustering,25672,”::”},{amqp,5672,”::”}]},
{vm_memory_calculation_strategy,rss},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,416322355},
{disk_free_limit,50000000},
{disk_free,35786248192},
{file_descriptors,
[{total_limit,65435},
{total_used,2},
{sockets_limit,58889},
{sockets_used,0}]},
{processes,[{limit,1048576},{used,200}]},
{run_queue,0},
{uptime,84},
{kernel,{net_ticktime,60}}]
關閉服務:
./rabbitmqctl stop
4. 配置網頁插件
首先創建目錄,否則可能報錯:
mkdir /etc/rabbitmq
然後啓用插件:
./rabbitmq-plugins enable rabbitmq_management
配置linux 端口 15672 網頁管理 5672 AMQP端口
然後訪問http://localhost:15672即可
5. 遠程訪問配置
默認網頁是不允許訪問的,需要增加一個用戶修改一下權限,進入sbin代碼如下:
添加用戶: ./rabbitmqctl add_user mlr mlr
添加權限: ./rabbitmqctl set_permissions -p "/" mlr ".*" ".*" ".*"
修改用戶角色: ./rabbitmqctl set_user_tags hxb administrator
然後就可以遠程訪問了,然後可直接配置用戶權限等信息。
6. rabbitmq常用命令
add_user
delete_user
change_password
list_users
add_vhost
delete_vhost
list_vhostsset_permissions [-p ]
clear_permissions [-p ]
list_permissions [-p ]
list_user_permissions
list_queues [-p ] [ …]
list_exchanges [-p ] [ …]
list_bindings [-p ]
list_connections [ …]