Skip to content

Menu
  • Home
  • 文章
    • 监控
      • 自己开发的监控服务
    • MQ
      • rabbitmq
    • Database
      • Mysql
      • redis
  • 常用脚本
    • shell
      • 系统初始化
      • jdk安装
  • 资源
    • 豆包
    • ChatGPT
    • 哔哩哔哩
    • CSDN
    • 百度
    • Github
    • 阿里镜像源
    • 腾讯云
  • 联系方式
  • 关于本站
Menu

Rabbitmq基础配置

Posted on 2025年11月21日2025年11月21日 by rangrang

rabbitmq原理概念

2007年,Rabbit技术公司基于AMQP标准开发的RabbitMQ 1.0 发布。RabbitMQ采用Erlang语言开发。Erlang 语言专门为开发高并发和分布式系统的一种语言,在电信领域使用广泛。 RabbitMQ 基础架构如下图:

四大核心概念:

生产者:产生数据发送消息的程序

交换机:交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息 推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推 送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定 。

队列:队列是RabbitMQ 内部使用的一种数据结构,尽管消息流经 RabbitMQ 和应用程序,但它们只能存 储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可 以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。这就是我们使用队列的方式 。

消费者:消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序。请注意生产者,消费 者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。
RabbitMQ中的名词介绍:

Binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key。Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据

Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker

Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类 似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务 时,可以划分出多个vhost,每个用户在自己的 vhost 创建 exchange/queue 等

Connection:publisher/consumer 和 broker 之间的 TCP 连接

Channel:如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCP Connection的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接, 如果应用程序支持多线程,通常每个thread创建单独的channel 进行通讯,AMQP method 包含了channel id 帮助客户端和message broker 识别 channel,所以 channel 之间是完全隔离的。 Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销

Exchange:交换机,message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发 消息到queue中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)

Queue:消息最终被送到这里等待 consumer 取走

rabbitmq基本配置与使用

rabbitmq下载
#解压软件包
unzip rabbitmq.zip -d /root
#配置yum源
cat >/etc/yum.repos.d/rq.repo<<EOF 
[rq]
name=rq
baseurl=file:///root/rabbitmq
gpgcheck=0
enabled=1
EOF
#安装rabbitmq
yum install -y rabbitmq-server
#配置主机名解析
[root@rocky221 ~]# tail -n 1 /etc/hosts
192.168.66.221 rocky221
#启动rabbitmq
systemctl start rabbitmq-server

插件管理

rabbitmq_delayed_message_exchange-3.13.0下载
#列出所有插件
rabbitmq-plugins list

#列出插件所有插件描述信息
rabbitmq-plugins list -v

#列出插件名包含"management"的插件
rabbitmq-plugins list -v management

#此命令列出所有隐式或明确启用的RabbitMQ插件
rabbitmq-plugins list -e rabbit 

#启动插件:
rabbitmq-plugins enable rabbitmq_management
启用rabbitmq管理插件以后,可以通过浏览器http://127.0.0.1:15672访问,默认帐号密码都为guest,在rabbitmq3.0以后,出于安全考虑,guest用户只允许本机登陆,要想实现远程登陆,需要自己创建用户。

#禁用插件
rabbitmq-plugins disable rabbitmq_management

#安装第三方插件
Centos使用rpm -ql查看插件文件存放目录、ubuntu使用dpkg -L rabbitmq-server 查看插件文件存放目录
将下载文件存放至插件目录
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.13.0/rabbitmq_delayed_message_exchange-3.13.0.ez
#下载失败的话,可以直接点击文章内的插件进行下载,上传至服务器
mv rabbitmq_delayed_message_exchange-3.13.0.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.13.7/plugins/
查看是否安装成功
[root@rocky221 ~]# rabbitmq-plugins list |grep rabbitmq_delayed_message_exchange
[  ] rabbitmq_delayed_message_exchange 3.13.0

Virtual_hosts 管理

#新建vhosts
[root@rocky221 ~]# rabbitmqctl add_vhost /test
Adding vhost "/test" ...
#列出vhosts
[root@rocky221 ~]# rabbitmqctl list_vhosts
Listing vhosts ...
name
/test
/
#删除vhosts
[root@rocky221 ~]# rabbitmqctl delete_vhost /test
Deleting vhost "/test" ...

queues管理

# 列出virtual_host中的queues
rabbitmqctl list_queues -p /test

# 删除queue
rabbitmqctl delete_queue q_name

# 清理queue: 删除queue中的所有数据
rabbitmqctl purge_queue q_name

exchange、bindings管理

# 列出virtual_host中的exchanges
rabbitmqctl list_exchanges -p /test

# 列出vhost绑定信息
rabbitmqctl list_bindings -p /

# 列出tcp/ip连接统计信息
rabbitmqctl list_connections

用户及权限角色

rabbitmq用户角色
none: 不能访问management plugin
management: 用户可以通过AMQP做的任何事
* 列出自己可以通过 AMQP 登入的 virtual hosts
* 查看自己的 virtual hosts 中的 queues,exchanges 和 bindings
* 查看和关闭自己的 channels 和 connections
* 查看有关自己的 virtual hostsr”全局”统计信息,包含其他用户在这些 virtual hosts 中的活动。
policymaker: 除了 management 可以做的所有事之外,还可以:
* 查看、创建和删除自己的 virtual hosts 所属的 policies 和 parameters
monitoring:除了 management 可以做的任何事外,还可以:
* 列出所有 virtual hosts,包括他们不能登录的 virtual hosts
* 查看其他用户的 connections 和 channels
* 查看节点级别的数据如 clustering 和 memory 使用情况
adminstrator:除了 policymaker 和 monitoring 可以做的所有事外,还可以:
* 创建和删除 virtual hosts
* 查看、创建和删除 users
* 查看创建和删除 permissions
* 关闭其他用户的 connections

用户管理示例:

# 创建一个管理员用户:

rabbitmqctl add_user admin xxx

rabbitmqctl set_user_tags admin administrator

# 创建一个监控用户:

rabbbitmqctl add_user monitor xxx

rabbitmqctl set_user_tags monitor monitoring

# 列出所有用户:

rabbitmqctl list_users

# 删除用户

rabbitmqctl delete_user admin

# 修改用户密码:

rabbitmqctl change_password admin password

rabbitmq权限控制

rabbitmg 的默认权限:
默认 virtual host: “/”
默认用户:guest
(guest 具有”/”上的全部权限,但仅能通过 localhost 访问)
用户仅能对其所能访问的 virtualhosts 中的资源进行操作。这里的资源指的是 virtual hosts 中的exchanges、queues 等,操作包括对资源进行配置、写、读。配置权限可创建。删除资源并修改资源的行为,写权限可向资源发送消息,读权限从资源获取消息。比如:
exchange 和 queue 的 declare 与 delete 分别需要 exchange 和 queue 上的配置权限
exchange 的 bind 与 unbind 需要 exchange 的读写权限
queue 的 bind 与 unbind 需要 queue 写权限 exchange 的读权限
发消息(publish)需 exchange 的写权限
获取或清除(get、consume、purge)消息需 queue 的读权限

对何种资源具有配置、读的权限通过正则表达式来匹配,具体命令如下:
set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
示例
# 为用户授权:
rabbitmqctl  set_permissions -p /vhost1  user01 '.*' '.*' '.*' 

# 清除用户权限:
rabbitmqctl clear_permissions -p /vhost1 user01

# 查看virtual_host用户权限:
rabbitmqctl list_permissions -p /vhost1

# 查看用户权限:
rabbitmqctl list_user_permissions user01

# 为用户授权:
rabbitmqctl  set_permissions -p /vhost1  user01 '.*' '.*' '.*' 

# 查看用户权限:
rabbitmqctl list_user_permissions user01

# 查看virtual_host用户权限:
rabbitmqctl list_permissions -p /vhost1

# 删除权限
rabbitmqctl clear_permissions -p /vhost1

1 thought on “Rabbitmq基础配置”

  1. Pingback: rabbitmq效果演示与集群配置

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

网站统计

本站已运行:5 天

文章总数:9 篇

分类:6 个 · 标签:6 个

最后更新:2025-11-22

一句话

记录每一次踩坑,帮后来人少踩一个坑。

持续学习 · 持续输出 · 持续复盘。

友情链接

  • 新华社
  • 人民网
  • 中国网
© 2025 | Powered by Superbs Personal Blog theme