RabbitMQ入门(一)

RabbitMQ介绍

官网:https://www.rabbitmq.com

RabbitMQ是一款在全球范围内使用非常广泛的开源消息队列中间件。它轻量级、易部署、并支持多种协议。它基于Erlang开发,天生拥有高并发的能力。

RabbitMQ相关术语
  • 生产者:

产生消息的进程或服务

  • 消费者:

接收消息的进程或服务

  • 队列:

RabbitMQ是消息队列中间件,而真正储存消息数据的就是队列,队列可以有很多。

  • 交换器:

类似于网络设备交换机,它可以根据不同的关键字,将消息发送到不同的队列。

在这里插入图片描述

  • 虚拟主机:

虚拟主机类似于Apache的虚拟主机,如果没有虚拟主机,当RabbitMQ中的数据越来越庞大,队列越来越多,随之而来的是令人头痛的管理问题,比如队列、交换器命名冲突,它们相互影响等等。虚拟主机能够解决这些问题,而不需要我们部署多个RabbitMQ来负责不同的业务。

虚拟主机提供了资源的逻辑分组和分隔,每一个虚拟主机本质上是mini版的RabbitMQ服务器,他们有用自己的连接、队列、绑定、交换器,更重要的是有用自己的权限机制,这有点类似服务器和运行在服务器上的虚拟机一样。


CentOS7下安装RabbitMQ(单机)

官方文档: https://www.rabbitmq.com/install-rpm.html

  • 安装erlang:
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash

yum install -y erlang
  • 安装RabbitMQ:
rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey

rpm --import https://packagecloud.io/gpg.key

rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc

vim /etc/yum.repos.d/rabbitmq.repo               #内容如下

[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1

yum install -y rabbitmq-server
  • 启动:
systemctl start rabbitmq-server

#监听端口为4369,25672
netstat -lntp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      15966/beam.smp      
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      16132/epmd          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6342/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      6563/master         
tcp6       0      0 :::5672                 :::*                    LISTEN      15966/beam.smp      
tcp6       0      0 :::4369                 :::*                    LISTEN      16132/epmd          
tcp6       0      0 :::22                   :::*                    LISTEN      6342/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      6563/master
  • 开启web管理控制台:
rabbitmq-plugins enable rabbitmq_management

此时可以通过http://ip:15672 来访问rabbitmq的web管理控制台,用户名密码都是guest

在这里插入图片描述

但是有个限制,只允许127.0.0.1访问,所以还需在本机配置一个nginx代理。

  • 配置Nginx代理:
yum install -y nginx

vim /etc/nginx/conf.d/rabbitmq.conf

server {
	listen 80;
	server_name rabbitmq.test.com;
	
        location /
        {
            proxy_pass http://127.0.0.1:15672;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

systemctl start nginx

在电脑上hosts文件增加一行:192.168.30.128 rabbitmq.test.com,访问网页并登录

在这里插入图片描述

在这里插入图片描述


rabbitmq常用命令

虚拟机管理
rabbitmqctl list_vhosts                 #列出所有的虚拟主机
rabbitmqctl add_vhost <虚拟主机名字>                #创建虚拟主机
如:rabbitmqctl add_vhost  lzx              #创建虚拟主机lzx
rabbitmqctl delete_vhost <虚拟主机名字>             #删除虚拟主机
用户管理
rabbitmqctl add_user <username> <password>              #创建用户
如:rabbitmqctl add_user user1 user1_passwd             #创建user1用户,密码为user1_passwd
rabbitmqctl list_users              #列出所有用户
rabbitmqctl change_password <username> <password>               #更改用户密码
如:rabbitmqctl change_password user1 new_passwd                #更改user1的密码为new_passwd
rabbitmqctl delete_user <username>              #删除用户
rabbitmqctl clear_password <username>               #清除用户密码

对于RabbitMQ的web管理控制台,角色有以下几种:

(1) 超级管理员(administrator)

可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

(2) 监控者(monitoring)

可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)。

(3) 策略制定者(policymaker)

可登陆管理控制台(启用management plugin的情况下),同时可以对policy进行管理。但无法查看节点的相关信息。

(4) 普通管理者(management)

仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

(5) 其他

无法登陆管理控制台,通常就是普通的生产者和消费者。

rabbitmqctl set_user_tags <username> <rolename>             #赋予用户某个角色

如:rabbitmqctl set_user_tags user1 managemnet              #赋予user1用户management角色
    rabbitmqctl set_user_tags user2 monitoring management               #同时赋予user2用户多个角色
rabbitmqctl set_permissions -p <vhostname> <username> <conf> <write> <read>             #给用户设置权限

如:rabbitmqctl set_permissions -p vhost1 user1 '.*' '.*' '.*'                #针对vhost1虚拟主机给user1用户设置所有的配置、读写queue和exchange的权限

说明:用户权限指的是用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作。

例如:将queue绑定到某exchange上,需要具有queue的可写权限,以及exchange的可读权限;向exchange发送消息需要具有exchange的可写权限;从queue里取数据需要具有queue的可读权限。

rabbitmqctl list_user_permissions <username>                #列出某用户的权限,即该用户对哪个虚拟主机有权限
rabbitmqctl list_permissions -p <vhostname>             #列出指定虚拟主机下所有用户的权限,即哪些用户对该虚拟主机有权限
rabbitmqctl clear_permissions -p <vhostname> <user>             #清除某用户在指定虚拟机上的授权
如:rabbitmqctl clear_permissions -p vhost1 user1
插件管理
rabbitmq-plugins list               #获取RabbitMQ插件列表
rabbitmq-plugins enable <插件名字>              #安装RabbitMQ插件
rabbitmq-plugins disable <插件名字>             #卸载某个插件
限制
rabbitmqctl set_vhost_limits -p vhost_name '{"max-connections": 256}'               #设置虚拟主机的最大连接数
rabbitmqctl set_vhost_limits -p vhost_name '{"max-connections": 0}'                 #不允许客户端连接虚拟主机
rabbitmqctl set_vhost_limits -p vhost_name '{"max-connections": -1}'                #不限制连接数
rabbitmqctl set_vhost_limits -p vhost_name '{"max-queues": 1024}'               #限制虚拟主机里最大的队列数
rabbitmqctl set_vhost_limits -p vhost_name '{"max-queues": -1}'             #不限制队列数
其他
rabbitmqctl list_exchanges              #列出所有的交换器
rabbitmqctl list_bindings               #列出所有的绑定,即把exchange和queue按照路由规则绑定起来
rabbitmqctl list_queues                 #分别查看当前系统种存在的exchange和exchange上绑定的queue信息
rabbitmqctl status              #查看运行信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值