RabbitMQ快速入门
简单模式就用的比较少了,反而用Redis队列比较多.
这里把之前做的笔记都记下来.
RabbitMQ 介绍
- 是面向消息的中间件,用于组件之间的解耦.主要体现在消息的发送者和消费者之间无强依赖关系.
- 特点: 高可用,扩展性,多语言客户端,管理界面.
- 主要使用场景: 流量削峰,异步处理,应用解耦.
- 默认监听端口:15672
安装和查看
mac安装
brew install rabbitmq
注意,如果使用brew安装,不能直接使用RabbitMQ的命令只能手动指定路径
/usr/local/Cellar/rabbitmq/3.8.2/sbin/rabbitmqctl
但是可以直接使用
brew services run rabbitmq
启动RabbitMQubuntu安装
apt-get install rabbitmq-server
配置浏览器访问
- 查看运行状态
sudo service rabbitmq-server statu
- 运行,关闭,重启,状态查看
# 系统命令sudo service rabbitmq-server start
sudo service rabbitmq-server stop
sudo service rabbitmq-server restart
sudo service rabbitmq-server status
# rabbitmq-server命令
sudo rabbitmq-server start&
sudo rabbitmq-server stop
sudo rabbitmqctl status
- 如果要做Web可视化,需要安装插件,随后可以通过浏览器访问
15672
查看状态
sudo rabbitmq-plugins enable rabbitmq_management
- 重启服务
sudo service rabbitmq-server restart
- 查看用户
sudo rabbitmqctl list_users
- 增加普通用户,给普通用户分配为管理员角色,修改制定用户的密码
# 新建用户root,同时设置密码rootsudo rabbitmqctl add_user root root
# 为用户root设置最高权限
sudo rabbitmqctl set_user_tags root administrator
# 修改用密码
sudo rabbitmqctl change_password name "newPasswd"
#查看用户列表
sudo rabbitmqctl list_users
# 删除用户
sudo rabbitmqctl delete_user username
# 清除用户权限
sudo rabbitmqctl clear_permissions -p vhostpath username
# 设置权限
sudo rabbitmqctl set_permissions -p vhostpath username
- 现在可以用第7步设置的账号和密码来访问
http://ip:15672
使用rabbitmq的监控页面.
RabbitMQ常用命令
插件管理
# 查看支持的插件列表sudo rabbitmq-plugins list
# 开启插件
sudo rabbitmq-plugins enable 插件名
# 关闭插件
sudo rabbitmq-plugins disable 插件名
- 查看插件[]为空说明未启用
sudo rabbitmq-plugins list
- 开启插件
web管理界面插件
sudo rabbitmq-plugins enable rabbitmq_management
日志插件
sudo rabbitmq-plugins enablerabbitmq_tracing
- 取消插件
sudo rabbit-mq-plugins disable rabbitmq_management
RabbitMQ核心概念
VirtualHost
数据隔离,区分队列,隔离账号. 比如可以分成生成和线下环境之类的
初始用户未绑定Vhost,需要绑定Vhost.一旦绑定之后用户只能通过这个Vhost工作不管是新建连接还是发送队列.
Connection
查看连接, 监听进程
Exchange
交换机,做中转用.
工作原理: 用户发送消息-> 交换机-> 根据交换机规则绑定对应的Key
Channel
建立连接通信
Queue
队列
绑定交换机接收消息,只要没有消费者,消息会一直存在队列中
Binding
将我们起的队列绑定到交换机上面,通过不同方式的绑定,可以实现不同的工作模式
工作中常用的模式
Simple(简单模式)
一个生产者,一个消费者.
每个消费者获取到的消息唯一,也就是同一个消息只能被消费一次,其他人再次消费的就是下一条消息.
就像普通队列那样.
Work(工作模式)
一个生产者,多个消费者
每个消费者获取到的消息唯一,也就是说同一个消息只能被消费一次,其他人再次消费的就是下一条消息。可以起到负载分配的作用,负载均衡. 就像普通队列那样
当生产数量比消费数量多的时候,就应该启用work模式.
其实work工作模式就是在simple模式的消费端多了几个消费者而已,代码什么的都不用变.多起几个消费者即可.
Publish/Subscribe(订阅模式)
订阅模式,消息被路由投递给多个队列,一个消息被多个消费者获取。
Routing(路由模式)
路由模式,一个消息被多个消费者获取。并且消息的目标队列可被生产者指定。
Topic(话题模式)
将路由键和某模式进行匹配,此时队列需要绑定在一个模式上,“#”匹配一个词或多个词,“*”只匹配一个词。
以上是 RabbitMQ快速入门 的全部内容, 来源链接: utcz.com/z/513314.html