0
点赞
收藏
分享

微信扫一扫

rabbitMQ学习-vhost及命令行工具

vhost

RabbitMQ 中有一个概念叫做多租户:

我们安装一个 RabbitMQ 服务器,每一个 RabbitMQ 服务器都能创建出许多虚拟的消息服务器,这些虚拟的消息服务器就是我们所说的虚拟主机(virtual host),一般简称为 vhost。

本质上,每一个 vhost 都是一个独立的小型 RabbitMQ 服务器,这个 vhost 中会有自己的消息队列、消息交换机以及相应的绑定关系等等,并且拥有自己独立的权限,不同的 vhost 中的队列和交换机不能互相绑定,这样技能保证运行安全又能避免命名冲突。

我们并不需要特别的去看待 vhost,他就跟普通的物理 RabbitMQ 一样,不同的 vhost 能够提供逻辑上的分离,确保不同的应用消息队列能够安全独立运行。

要我来说,我们该怎么看待 vhost 和 RabbitMQ 的关系呢?RabbitMQ 相当于一个 Excel 文件,而 vhost 则是 Excel 文件中的一个个 sheet,我们所有的操作都是在某一个 sheet 上进行操作。

命令行创建vhost

#创建vhost
#查看vhost
rabbitmqctl add_vhost myvh
rabbitmqctl list_vhosts

#删除vhost,当删除vhost的时候,与vhost相关的消息列队,交换机以及绑定关系等,统统都会被删除
rabbitmqctl delete_vhost myvh

rabbitMQ学习-vhost及命令行工具_服务器

#给用户设置vhost
rabbitmqctl set_permissions -p myvh guest ".*" ".*" ".*"

含义如下:

  • 用户在所有资源上都拥有可配置权限(创建/删除消息队列、创建/删除交换机等)。
  • 用户在所有资源上都拥有写权限(发消息)。
  • 用户在所有资源上都拥有读权限(消息消费,清空队列等)。

#禁止用户访问vhost
rabbitmqctl clear_permissions -p myvh guest

用户管理

#创建用户
rabbitmqctl add_user javaboy 123
#修改用户
rabbitmqctl change_password javaboy 123456
#验证用户,密码
rabbitmqctl authenticate_user javaboy 123456
#查询当前所有用户
rabbitmqctl list_users

rabbitMQ学习-vhost及命令行工具_消息队列_02

rabbitMQ学习-vhost及命令行工具_消息队列_03

rabbitmqadmin

  • 列出 exchanges, queues, bindings, vhosts, users, permissions, connections and channels。
  • 创建和删除 exchanges, queues, bindings, vhosts, users and permissions。
  • 发布和获取消息,以及消息详情。
  • 关闭连接和清空队列。
  • 导入导出配置。

相关操作

rabbitmqadmin list exchanges

rabbitMQ学习-vhost及命令行工具_消息队列_04

查看所有的列队

#查看列队
rabbitmqadmin list queues
#查看bind
rabbitmqadmin list bindings
#查看虚拟主机
rabbitmqadmin list vhosts
#查看所有用户信息
rabbitmqadmin list users
#查看权限信息
rabbitmqadmin list permissions
#查看连接信息
rabbitmqadmin list connections
#查看通道信息
rabbitmqadmin list channels


操作举例

#创建一个交换机,名为 javaboy-exchange 
rabbitmqadmin declare exchange name=javaboy-exchange durable=true auto_delete=false type=direct

#创建一个列队
rabbitmqadmin declare queue name=javaboy-queue durable=true auto_delete=false

#创建一个binding,将列队绑定起来
#source:源,其实就是指交换机。 destination:目标,其实就是指消息队列。 routing_key:这个就是路由的 key
rabbitmqadmin declare binding source=javaboy-exchange destination=javaboy-queue routing_key=javaboy-routing

#发送消息
rabbitmqadmin publish routing_key=javaboy-queue payload="hello javaboy"

#查看消息
rabbitmqadmin get queue=javaboy-queue

#清空列队
rabbitmqadmin purge queue name=javaboy-queue

详细命令

rabbitMQ学习-vhost及命令行工具_服务器_05

举报

相关推荐

0 条评论