插个广告,公司最近在招“.NET”开发(杭州),如果你现在还从事 .NET 开发(想用 .NET Core,但被公司不认可),想转 JAVA 开发(但又没有工作经验,惧怕面试),想用微服务架构重构(面对现有庞大的单体应用程序,有心无力),那么请关注右侧的公众号私信我,或许我可以帮到你一些~~~
一般情况下,我们会使用 rabbitmq_management 插件,通过 Web UI 的方式来监控和操作 RabbitMQ(端口 15672),但有时候命令的方式会更加方便一些,RabbitMQ 提供了 CLI 管理工具 rabbitmqadmin ,其实就是基于 RabbitMQ 的 HTTP API,用 Python 写的一个脚本。
另外,除了 rabbitmqadmin ,有个人也写了一个 rabbitmq-dump-queue 脚本,用于抓取 Queue 队列,用文件进行存储,但使用下来,感觉还是官方的 rabbitmqadmin 比较好些。
rabbitmqadmin 提供了下面功能:
列出 exchanges, queues, bindings, vhosts, users, permissions, connections and channels。
创建和删除 exchanges, queues, bindings, vhosts, users and permissions。
发布和获取消息,以及消息详情。
关闭连接和清空队列。
导入导出配置。
使用 rabbitmqadmin 的时候,我们需要理解 RabbitMQ 的基本概念,先回顾一下:
RabbitMQ 概念:
概念 详解Exchange 消息交换机,它指定消息按什么规则,路由到哪个队列
Queue 消息队列,每个消息都会被投入到一个或多个队列
Binding 绑定,它的作用就是把 exchange 和 queue 按照路由规则绑定起来
Routing Key 路由关键字,exchange 根据这个关键字进行消息投递
Vhost 虚拟主机,可以开设多个 vhost,用作不同用户的权限分离
Producer 消息生产者,就是投递消息的程序
Consumer 消息消费者,就是接受消息的程序
Channel 消息通道,在客户端的每个连接里,可建立多个 channel,每个 channel 代表一个会话任务
RabbitMQ 流程:
RabbitMQ 投递过程:
1. 客户端连接到消息队列服务器,打开一个 channel。
2. 客户端声明一个 exchange,并设置相关属性。
3. 客户端声明一个 queue,并设置相关属性。
4. 客户端使用 routing key,在 exchange 和 queue 之间建立好绑定关系。
5. 客户端投递消息到 exchange。
6. 客户端从指定的 queue 中消费信息。
不理解?没关系,看下面。接下来,我们就用 rabbitmqadmin ,来演示上面 RabbitMQ 投递过程。
如果我们安装了rabbitmq_management插件,可以打开:15672/cli/页面,下载 rabbitmqadmin。
或者直接进行下载:
[root@node1 ~]# wget :15672/cli/rabbitmqadmin