RabbitMQ安装及简单操作

[复制链接]
查看9700 | 回复3 | 2022-3-12 16:27:44 | 显示全部楼层 |阅读模式
一、概述2 ^3 r& l' c/ {4 C+ U
/ N& y0 G0 w% Z+ j; O7 L4 `: i. G
RabbitMQ安装及简单操作-1.jpg

" e' K  ?/ m! \2 H- A! J  s1 fRabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。它可以用于大型软件系统各个模块之间的高效通信,支持高并发,支持可扩展。最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
4 S, R) M( ^4 X官网:https://www.rabbitmq.com# n6 [4 @; C1 ?( W! q
下载:https://github.com/rabbitmq/rabbitmq-server/releases/8 r; Q6 K+ n" g: M5 [7 @

: L( n4 j  [+ |# }& Q+ ~& F9 T9 g* ]% s' F
7 x4 s& T; i( _, u5 W+ K
9 U+ E- O4 i) I1 j- {% J
二、说明% ^9 e3 K+ @  @# M  F2 w
安装RabbitMQ server需要Erlang语言环境,请参考https://www.toutiao.com/i6950544298114859527/,本文中不再赘述安装配置步骤。
; G6 _7 X9 E+ c) \& R+ @/ w本文介绍在CentOS7.8 x64(测试服务器IP:192.168.168.100)系统下,使用二进制包源码包编译安装最新(截止2021年4月14日)版本,版本号为3.8.14。
8 x; S3 ~" P5 n& T/ C" ~7 @( A1 O. O1 y* \1 ?2 f
) ~7 J4 E+ e1 \2 u) Q# `
: {  Q2 k3 O2 e% }/ {9 p

8 n/ z3 i) D4 _+ j$ C2 v2 B三、二进制包安装
. K2 W9 V; D! j$ I8 U) n1.下载安装
. Q; Q4 y  _* t' h( ocd /data/toolswget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.14/rabbitmq-server-generic-unix-3.8.14.tar.xztar xf rabbitmq-server-generic-unix-3.8.14.tar.xzmv rabbitmq_server-3.8.14 /usr/local/cd /usr/localchown -R root.root rabbitmq_server-3.8.14ln -sf rabbitmq_server-3.8.14 rabbitmq
3 W; ?/ C( R* R  d7 q0 u  k& [+ V, {- I, t  s$ V
2.环境变量配置% ~" J. j% ^/ u, _8 [; m
vi /etc/profile //末尾添加如下内容! U. X0 y. {* m0 \. P* [
######SET RabbitMQ Environmentexport PATH=$PATH:/usr/local/rabbitmq/sbin//生效环境变量  b- a' L5 D2 C0 \
source /etc/profile5 X4 [5 y  E& |3 m4 s' P0 j: k9 Q) b- h

) \4 K; G! E- ~' J7 c5 z
3 b" E# p3 f" m( x" o7 P8 E5 Z% z7 k! }; E0 x9 d2 K2 }: Y$ s8 q
四、源码包编译安装
; H3 y( s, d% u# G* v& [1.依赖安装
- v& M1 G5 \6 N9 ]- z①基础依赖% m2 m/ Y" R, s+ o2 ?4 q7 n6 t
yum -y install git libxslt libxslt-devel rsync xmlto zip unzip②动态的功能语言elixir
  r9 c8 E8 Z# E! l4 j, c5 m官网:https://elixir-lang.org/ 9 }0 I; W1 `6 C: Z
Github仓库地址:https://github.com/elixir-lang/elixir  X1 ?+ C4 S+ v
cd /data/toolsgit clone -b v1.11.4 https://github.com/elixir-lang/elixir.gitcd elixirmake clean testmake install
3 @5 g) A* I/ U9 w- b4 I1 F% q5 D8 t# G
2.下载编译安装
' X- M0 Z7 }) n5 W1 D2 A' |) y9 [( Qcd /data/toolswget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.14/rabbitmq-server-3.8.14.tar.xztar xf rabbitmq-server-3.8.14.tar.xzcd rabbitmq-server-3.8.14## 使用make && make install进行编译安装,RabbitMQ会安装到 /usr/local/lib/erlang/lib/rabbitmq_server-x.x.x/,试着修改编译时的参数,都不能达到改变安装目录,最后找到下面方法
% }* e" O8 V% {( c## 找到源文件目录下的Makefile文件
0 A- K& B  }! g3 K( A- {. dvi Makefile //修改如下配置项
2 k7 o: s* |# MPREFIX ?= /usr/local WINDOWS_PREFIX ?= rabbitmq-server-windows-$(PROJECT_VERSION)MANDIR ?= $(PREFIX)/share/manRMQ_ROOTDIR ?= $(PREFIX)/lib/erlangRMQ_BINDIR ?= $(RMQ_ROOTDIR)/binRMQ_LIBDIR ?= $(RMQ_ROOTDIR)/libRMQ_ERLAPP_DIR ?= $(RMQ_LIBDIR)/rabbitmq_server-$(PROJECT_VERSION)RMQ_AUTOCOMPLETE_DIR ?= $(RMQ_ROOTDIR)/autocomplete将以上配置项的内容修改为如下内容PREFIX ?= /usr/local/rabbitmq-3.8.14WINDOWS_PREFIX ?= rabbitmq-server-windows-$(PROJECT_VERSION)MANDIR ?= $(PREFIX)/share/manRMQ_ROOTDIR ?= $(PREFIX)RMQ_BINDIR ?= $(RMQ_ROOTDIR)/sbinRMQ_LIBDIR ?= $(RMQ_ROOTDIR)RMQ_ERLAPP_DIR ?= $(RMQ_LIBDIR)RMQ_AUTOCOMPLETE_DIR ?= $(RMQ_ROOTDIR)/autocomplete//再执行编译安装命令
1 D4 W9 j# A5 E5 _4 \( W7 tmakemake installcd /usr/local/## 创建软连接,方便管理ln -sf rabbitmq-3.8.14 rabbitmq5 I! Q% @6 K! d# i7 x4 y" }

5 |0 T% K+ J  I6 y. x' @* \3.环境变量配置: f: A, Y& y# g& Z% D: w% J- I
vi /etc/profile //末尾添加如下内容
  A* n, i9 J, c/ q1 G, J######SET RabbitMQ Environmentexport PATH=$PATH:/usr/local/rabbitmq/sbin//生效环境变量
, v; s8 F: L1 u- c) R5 Asource /etc/profile2 t! r/ m) e+ r1 p8 ]3 e

) S* p4 R  S: ~' c' J1 u! y
% B$ B7 j, `* l" V3 A& w5 ~( T$ _+ D% e2 {
五、服务管理说明
+ f9 v! w! G- h5 ?# Lcd /usr/local/rabbitmq/sbin8 D! U+ a: ~! C4 L) b, U
启动:7 Q' `( }6 j5 S" E7 z8 D$ g- d
./rabbitmq-server -detached
6 u" b2 S! [: P//参数 -detached 表示后台启动
( u; D' s+ K+ |" ]; J ./rabbitmq-server start &
& p% b% W, b) k- D ./rabbitmq-server &
. v9 b, J8 _0 G6 r2 O1 @, X' a$ u关闭:./rabbitmqctl stop/ K) Y0 X5 r3 s3 N% a9 e% P
查看服务状态:./rabbitmqctl status7 T6 q/ u  E0 e
若已配置环境变量,则不需要进入安装目录,直接运行命令即可启动或关闭服务。
3 y2 G2 @: D) a/ E$ O4 E启动:1 h3 c7 z. n1 i# y) `2 L
rabbitmq-server -detached
8 Q0 U+ G# d& I7 Q/ Y' N; t0 D4 l//参数 -detached 表示后台启动
* h/ T0 z) h* s5 \' [6 I, I rabbitmq-server start &* Z( Q) r! U4 I, e9 `
rabbitmq-server &) N5 o9 o- e! ]5 L, z- x
关闭:rabbitmqctl stop
9 j- L: \: V, t- P, R查看服务状态:rabbitmqctl status' M; [: b2 N6 V- @& B
备注:启动命令后若不加参数 -detached,如使用./rabbitmq-server 或 ./rabbitmq-server start 或 rabbitmq-server 或rabbitmq-server start,会一直显示着启动信息,无法正常退出到命令操作界面,需强制退出当前终端,这样也会关闭rabbitmq服务。
5 g- E' x  b' G; |2 Q默认监听端口:5672、25672( k; `/ c' f5 |& o, [8 L) P1 W4 l
配置开机启动:echo '/usr/local/rabbitmq/sbin/rabbitmq-server &' >> /etc/rc.local
0 ^4 C1 ^  ~4 p: _0 T9 `9 l
/ u: V4 t  a& v. j3 }/ b
, B3 n4 C3 W! }' B* C9 ?' N" t
6 l% P& A( Y$ _. B2 f
  t9 Z3 ~9 q1 A2 l六、插件安装- n" z3 q. v) J3 D) @+ `  l& z0 G
本文只介绍WEB插件及延时队列的安装步骤,其他插件的安装亦可参考这两个来完成安装。
4 o9 m" f4 ~* ~+ A6 j4 G5 e1.WEB管理
& y8 L6 o6 j" R: f. ^: S①安装
3 X7 p) q' m- [8 ]9 ?5 ?- Bmkdir -p /etc/rabbitmq //此目录必须手动创建,且不能改成别的路径和目录名
) H6 O% A6 `3 V1 w( ?+ O" f$ xrabbitmq-plugins enable rabbitmq_management
" N$ p) u" X& I8 `% h% S4 w
RabbitMQ安装及简单操作-2.jpg
# C& u1 U$ x' r5 N
重启RabbitMQ服务
8 z- o2 z8 S9 |, ~2 Q) q$ G: L1 T% s; U查看启动是否成功: netstat -tunlp | grep beam/ G9 S8 f# B+ R7 j5 w; K# N* u
, e0 }7 C! F4 l: {% j
RabbitMQ安装及简单操作-3.jpg
7 z- m4 a$ e9 W: N1 o
可以看到启动成功: 15672是rabbimq网页管理监听端口,5672是客户端使用的端口。management UI是static HTML页面,其通过Javascript查询HTTP API得到实时数据。实质上Web UI最终也是调用的Management command line tool。
( Y# t/ d2 D- |1 @2 P4 b- B9 t7 @+ U/ |1 k( @% }) S6 y$ i4 D' y& ?1 W
- ?1 d3 {! c% I/ N4 l! f$ B; z
②添加账号并配置管理权限
4 G7 ?. Z0 M. |; I+ _. ?, X访问http://ip:15672/,此时默认帐号guest/guest无法登录访问,因为默认的guest账号只能在本地机器访问, 如果想在其它机器访问必须配置其它账号。
" p( i# {# m; [1 ]) {/ V8 a## 添加帐号rabbitmqctl add_user admin 123456## 赋予管理员权限rabbitmqctl set_user_tags admin administrator## 添加权限rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
, }0 C. X  u+ b1 A$ H$ v( n
RabbitMQ安装及简单操作-4.jpg

( l% m' k* F5 i5 ~' U. _# K说明:添加帐号命令执行完成的提示是提醒要给帐号授权。3 r" }2 p, g; Y3 q5 o

% x! P" v$ T% f, R
/ E/ s4 W7 u7 b6 d. w③访问WEB页面
" W9 l7 |( ?; j* ~2 m地址栏输入:http://ip:15672/,本文为http://192.168.168.100:15672/ S0 g" S! q! z3 S' ~8 W4 W
注:服务器防火墙开启的状态下需要放开端口,或者关闭防火墙。, Z* Q! b# D3 h: z6 Y# \

! q+ {( L% m  h" \5 _8 E
RabbitMQ安装及简单操作-5.jpg

0 h/ [" T" E2 L0 I9 G## 输入账号admin,密码123456,登录! v* X5 f4 m* H

/ Y) l' I) b! i, Q
RabbitMQ安装及简单操作-6.jpg
7 n  _8 w. H  c3 \) R7 E
## 登录后,可查看到相关的基础信息! v2 v* f% G1 Z- C+ V9 T
- q' [" O+ b( \

8 Z* P& O7 T7 h/ \④删除guest账户
! R& U5 J5 p1 T3 U0 u. Orabbitmqctl delete_user guest
1 O% h/ q  R' [8 \8 b6 g4 J# {
RabbitMQ安装及简单操作-7.jpg
/ T: n8 }$ f' ~( c5 I- R7 Q, ^

* N0 D; e+ h( p  j2 P& ?' Q
( J* O3 X% L" M/ J2 s9 w2 ?2.延时消息队列% i4 B. D/ G6 N+ r, @9 ^, z
cd /usr/local/rabbitmq/pluginswget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.8.9/rabbitmq_delayed_message_exchange-3.8.9-0199d11c.ezrabbitmq-plugins enable rabbitmq_delayed_message_exchange/ L7 {0 i1 J6 X* b) \: d& N
RabbitMQ安装及简单操作-8.jpg

! i4 z' T: N0 r重启RabbitMQ服务: X3 J4 c, _, T- R3 m6 K) A
7 k# u3 ?$ A! h: e" {
" @& @5 S) A  j* }, N
3.查看已启用的插件( {8 u" N6 F# E9 \2 h: t0 |
rabbitmq-plugins list/ o* Q$ J' G& d' e) M  ^( L$ O8 }
RabbitMQ安装及简单操作-9.jpg

, u4 N$ k8 p9 U& X+ _
; l" T, C* i8 O9 S% {4 t/ z
4 F* R- k+ E' s
$ w5 B/ W- ]/ r: v  Y. S  j# @# J1 J  x5 f
七、常用功能命令说明9 V) h; L/ D6 s9 X4 U- v
RabbitMQ服务器的主要通过rabbitmqctl和rabbimq-plugins两个工具来管理,以下是一些常用功能。. o  u+ ^4 m# H7 x  p2 H
1.服务器启动与关闭  }% J! r. W; u0 }- ?) ]5 ?& c  t. J
启动:rabbitmq-server –detached
1 B" E+ x4 u$ j/ h 关闭:rabbitmqctl stop
* O1 R& a$ j/ `  G 若单机有多个实例,则在rabbitmqctl后加 –n 指定名称
! D: Q% W5 ]& m+ O' u6 o* m1 x+ d& \1 h, r& F! Y% f9 b

$ j* y7 }0 ^, }1 C$ a4 @. x2.插件管理
( F8 d% o# k) S2 d% {1 n 开启某个插件:rabbitmq-plugins enable xxx: [7 o) e; D& X0 q/ s# r- ~& q
关闭某个插件:rabbitmq-plugins disable xxx
8 t, S" h& J) v) l: l- N 查看已经安装的插件:rabbitmq-plugins list1 ~3 z* x0 ]3 T2 a
注意:重启服务器后生效。
# ]  {2 x8 I8 z& o( x# a/ V( j4 { 启用监控插件:./rabbitmq-plugins enable rabbitmq_management
8 ?' [* M& i1 Y' F( d4 _ 关闭监控插件:./rabbitmq-plugins disable rabbitmq_management# B+ z, r& o* c& @- @4 F
- V4 q, @0 E; a
, T4 Y* D* U2 U9 l
3.virtual_host管理% z  j0 s" W& R4 V2 g
新建virtual_host:rabbitmqctl add_vhost xxx1 [5 v# q  |% R+ B( V! k' }4 B
撤销virtual_host:rabbitmqctl delete_vhost xxx& ~6 i: n, ^1 V6 p- I. L9 y
9 G6 V9 u# |% I% ?( E) D5 e4 _
- I! m, m8 n3 R
4.用户管理
3 o; t# J( p* l1 Q" t 新建用户:rabbitmqctl add_user {username} {password}6 K) I) {$ t! K6 W. ^% \  ?
删除用户:rabbitmqctl delete_user {username}) u& t# ]1 h7 ~* P2 ^! h
改密码:rabbimqctl change_password {username} {newpassword}
0 v' N! I! B. p4 R4 i0 j 设置用户角色:rabbitmqctl set_user_tags {username} {tag ...}
9 u- p3 R! U, P+ R- h) C Tag可以为 administrator,monitoring, management) M9 I$ y7 j- n3 n8 d
查看当前用户列表:rabbitmqctl list_users1 x$ O! d7 a- k: F
赋予超级管理员权限:rabbitmqctl set_user_tags newuser administrator1 I2 _/ u& |! g. v5 g4 x
9 L; C5 P8 w$ a

- n) S1 z- }( x% J; ^/ y  {5. 权限管理
" ^  C; P, \, ?  C+ ~2 r 权限设置:set_permissions [-pvhostpath] {user} {conf} {write} {read}% G; O- ]" O2 Y& j; i

$ z8 Z3 S$ J3 a! N% @5 u
$ [9 U- \- E+ Y8 K0 N参数说明:
1 N7 ^7 G# r4 x9 b9 K8 K3 RVhostpath: Vhost路径
, E: X9 J" y; f( G% f: M: Z user: 用户名
3 s: K( u, J9 u3 g( F6 v Conf: 一个正则表达式match哪些配置资源能够被该用户访问。6 K5 W5 B! d% v# p$ K
Write: 一个正则表达式match哪些配置资源能够被该用户读。
; H4 U/ Z1 U, A Read:一个正则表达式match哪些配置资源能够被该用户访问。! W5 ^5 Q% B: Y2 |4 z0 ]
9 W+ b/ D+ b$ |$ L# I
9 Y: @0 h: Q( }/ E- g3 L
6. 获取服务器状态信息( u  V( M) T1 k  l& \
服务器状态:rabbitmqctl status
) G8 E3 y; {2 r- H% T" |9 g3 n* Q: d 队列信息:rabbitmqctl list_queues[-p vhostpath] [queueinfoitem ...]
1 w9 F, y( X2 b- Y$ n& B0 f Queueinfoitem可以为:name,durable,auto_delete,arguments,messages_ready,4 B8 t! g+ U1 J" f4 g1 t% M. _
messages_unacknowledged,messages,consumers,memory
4 T9 @$ U4 g; e$ n& s' S Exchange信息:rabbitmqctl list_exchanges[-p vhostpath] [exchangeinfoitem ...]! V# b  ]6 S8 q2 c5 o6 ?# ~# h
Exchangeinfoitem有:name,type,durable,auto_delete,internal,arguments.; Z1 y% i$ D; P. N0 @) c
Binding信息:rabbitmqctllist_bindings[-p vhostpath] [bindinginfoitem ...]1 y$ i! _% @' I8 L. X0 J; |/ e
Bindinginfoitem有:source_name,source_kind,destination_name,destination_kind,routing_key,arguments
/ `- l7 M0 S  A7 u4 B! t$ m( r Connection信息:rabbitmqctllist_connections [connectioninfoitem ...]
0 q& p; a. Q/ h* C3 g Connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。5 P5 d' k2 N8 q
Channel信息:rabbitmqctl list_channels[channelinfoitem ...]
9 l: `* z7 B% Y- g5 H Channelinfoitem有consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked
无止境游走咐 | 2022-3-12 21:57:26 | 显示全部楼层
转发
清新范儿儿j | 2022-3-13 06:29:22 | 显示全部楼层
转发了
木L子 | 2022-3-13 11:20:02 | 显示全部楼层
转发了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12

金钱

0

收听

0

听众
性别

新手上路

金钱
12 元