RabbitMQ的整体架构

RabbitMQ的消息流转过程

发消息时要指定 exchange 路由key
生产者生产出 Message并投递到Exchange上。
一个Exchange可以绑定多个MessageQueue 他根据路由策略(rouing key) 路由到指定的队列。
最后消费端去监听队列。
消息发布接收过程
-
发布消息
broker 等同意server- 生产者和Broker建立TCP连接
- 生产者和Broker建立通道。
- 生产者通过消息通道将消息发送给Borker。 有exchange将消息转发
- Exchange将消息转发到指定的Queue(队列)
-
接收消息
- 消费者和Broker建立TCP连接
- 消费者和Broker建立通道。
- 消费者监听指定的Queue(队列)
- 当有消息到达Queue时,Broker默认将消息推送给消费者。
- 消费者接收到消息。
RabbitMQ的安装和使用
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
下载:
wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
配置文件:
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
比如修改密码、配置等等,例如:loopback_users 中的 <<"guest">>,只保留guest
服务启动和停止:
启动 rabbitmq-server start &
停止 rabbitmqctl app_stop
管理插件:rabbitmq-plugins enable rabbitmq_management
访问地址:http://192.168.11.76:15672/

--基本命令 --
启动:
rabbitmqctl start_app
rabbitmq-server start & & 表示后台启动
//查看rabbit的端口、
lsof -i:5672 5672是rabbitmq服务的端口。 15672是管控台的端口 25673 是集群通信的端口
停止:
rabbitmqctl stop_app
rabbitmq-server stop
重启
service rabbitmq-server restart
查看节点状态
rabbitmqctl status
启动管控台(安装插件)
rabbitmq-plugins enable rabbitmq_management
如果需要操作防火墙
腾讯云记得设置安全组。
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
firewall-cmd --query-port=6379/tcp
firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用: systemctl disable firewalld
开机启用: systemctl enable firewalld
关于用户的操作
- 添加用户:
rabbitmqctl add_user username password
- 列出所有用户:
rabbitmqctl list_users
- 删除用户:
rabbitmqctl delete_user username
- 清除用户权限:
rabbitmqctl clear_permissions -p vhostpath username
- 列出用户权限:
rabbitmqctl list_user_permissions username
- 修改密码:
rabbitmqctl change_password username newpassword
- 设置用户权限:
rabbitmqctl set_permissions -p vhostpath username ".*" ".*" ".*"
关于虚拟主机的操作
- 创建虚拟主机:
rabbitmqctl add_vhost vhostpath
- 列出所有虚拟主机:
rabbitmqctl list_vhost
- 列出虚拟主机上所有权限:
rabbitmqctl list_permissions -p vhostpath
- 删除虚拟主机:
rabbitmqctl delete_vhost vhostpath
关于消息队列的操作
- 查看所有队列信息:
rabbitmqctl list_queues
- 清除队列里的消息:
rabbitmqctl -p vhostpath purge_queue blue
RabbitMq的高级操作
-
rabbitmqctl reset
: 移除所有数据。要在rebbitmqctl stop_app
之后使用 - 组成集群命令:
rabbitmqctl join_cluster <clusternode> [--ram]
(ram内存级别存储,disc磁盘) - 查看集群状态:
rabbitmqctl cluster_status
- 修改集群节点的存储形式:
rabbitmqctl change_cluster_node_type disc | ram
- 忘记(摘除)节点:
rabbitmqctl forget_cluster_node [--offline] (offline服务不启动的情况下)
- 修改节点名称:
rabbitmqctl rename_cluster_node oldnode1 newnode1 [oldnode2] [newnode2 ...]
网友评论