升级Erlang [root@h102 rabbitmq]# yum update erlang.x86_64 Loaded plugins: dellsysid, fastestmirror, refresh-packagekit, security Setting up Update Process Loading mirror speeds from cached hostfile * base: mirrors.pubyun.com * epel: mirrors.opencas.cn * e
Producer、Exchange、Binding、Queue、Consumer 之间的关系
file rabbitmqadmin chmod +x rabbitmqadmin rabbitmqadmin --help rabbitmqadmin help subcommands rabbitmqadmin help config rabbitmqadmin list users rabbitmqadmin list users name rabbitmqadmin list users tags rabbitmqadmin list vhosts rabbitmqadmin list connections rabbitmqadmin list exchanges rabbitmqadmin list bindings rabbitmqadmin list permissions rabbitmqadmin list permissions read rabbitmqadmin list channels rabbitmqadmin list parameters rabbitmqadmin list consumers rabbitmqadmin list queues rabbitmqadmin list policies rabbitmqadmin
查看 bindings [root@h102 rabbitmq]# rabbitmqadmin list bindings +--------+-------------+-------------+ -----+-------------+-------------+ [root@h102 rabbitmq]# ---- 查看 permissions [root@h102 rabbitmq]# rabbitmqadmin | .* | guest | .* | +-------+-----------+------+-------+-------+ [root@h102 rabbitmq]# rabbitmqadmin list channels No items [root@h102 rabbitmq]# ---- 查看 parameters [root@h102 rabbitmq]# rabbitmqadmin list parameters No items [root@h102 rabbitmq]# ---- 查看 consumers [root@h102 rabbitmq]# rabbitmqadmin
查看 queues [root@h102 rabbitmq]# rabbitmqadmin list queues +-------+----------+ | name | messages | + test | 5 | +-------+----------+ [root@h102 rabbitmq]# ---- 查看 policies [root@h102 rabbitmq]# rabbitmqadmin list policies No items [root@h102 rabbitmq]# ---- 查看 nodes [root@h102 rabbitmq]# rabbitmqadmin list delete queue name=hello queue deleted [root@h102 rabbitmq]# rabbitmqadmin list queues +------+------ delete user name=test user deleted [root@h102 rabbitmq]# rabbitmqadmin list users +-------+---------
这次我们使用 routing_key=first 来投递消息 [root@h102 rabbitmq]# rabbitmqadmin list queues +-------------+------- test | 2 | | test.fanout | 1 | +-------------+----------+ [root@h102 rabbitmq]# rabbitmqadmin purge queue name=test queue purged [root@h102 rabbitmq]# rabbitmqadmin purge queue name=test.fanout queue purged [root@h102 rabbitmq]# rabbitmqadmin list queues +-------------+----------+ | name declare queue name=test.direct durable=true queue declared [root@h102 rabbitmq]# rabbitmqadmin list
rabbitmqadmin rabbitmqadmin 可以完成和 Web UI 一样的工作,它其实是使用Python写的一个脚本,实现了一个http client The management plugin Note that rabbitmqadmin is just a specialised HTTP client; if you are contemplating invoking rabbitmqadmin rabbitmq]# ll rabbitmqadmin -rw-r--r-- 1 root root 34504 Apr 18 19:29 rabbitmqadmin [root@h102 rabbitmq ]# file rabbitmqadmin rabbitmqadmin: a /usr/bin/env python script text executable [root@h102 rabbitmq /rabbitmqadmin --help Usage ===== rabbitmqadmin [options] subcommand Options ======= --help, -h
(hash) can substitute for zero or more words headers 以后再探讨 系统中默认就有如下 exchange [root@h102 rabbitmq]# rabbitmqadmin --------+---------+ [root@h102 rabbitmq]# 我们创建了一个 queue 后,系统自动为它定义了一个 binding [root@h102 rabbitmq]# rabbitmqadmin declare exchange name=my.fanout type=fanout exchange declared [root@h102 rabbitmq]# rabbitmqadmin declare exchange name=my.direct type=direct exchange declared [root@h102 rabbitmq]# rabbitmqadmin declare exchange name=my.topic type=topic exchange declared [root@h102 rabbitmq]# rabbitmqadmin list exchanges +-----
尝试分别使用 third 和 fourth 的 routing_key 来发布消息 [root@h102 rabbitmq]# rabbitmqadmin list queues +---------- test.direct | 0 | | test.fanout | 0 | +-------------+----------+ [root@h102 rabbitmq]# rabbitmqadmin purge queue name=test queue purged [root@h102 rabbitmq]# rabbitmqadmin purge queue name=test.direct queue purged [root@h102 rabbitmq]# rabbitmqadmin list queues +-------------+----------+ | name declare queue name=test.topic durable=true queue declared [root@h102 rabbitmq]# rabbitmqadmin list queues
定义 binding 上面申明了几个 exchange ,尝试发布一条信息 [root@h102 rabbitmq]# rabbitmqadmin list queues +------+------- name | messages | +------+----------+ | test | 0 | +------+----------+ [root@h102 rabbitmq]# rabbitmqadmin publish routing_key=test payload="just for test2" Message published [root@h102 rabbitmq]# rabbitmqadmin 我们创建一个 binding [root@h102 rabbitmq]# rabbitmqadmin list bindings +--------+-------------+------------ =my.fanout payload="just for test1" Message published [root@h102 rabbitmq]# rabbitmqadmin list queues
于是信息路由不成功 ---- fanout 的特性 定义第二个queue ,也使用 my.fanout binding 起来,取 routing_key 为 second [root@h102 rabbitmq]# rabbitmqadmin name | messages | +------+----------+ | test | 1 | +------+----------+ [root@h102 rabbitmq]# rabbitmqadmin declare queue name=test.fanout durable=true queue declared [root@h102 rabbitmq]# rabbitmqadmin list test | 1 | | test.fanout | 0 | +-------------+----------+ [root@h102 rabbitmq]# rabbitmqadmin source=my.fanout destination=test.fanout routing_key=second binding declared [root@h102 rabbitmq]# rabbitmqadmin
但是建议还是使用仓库的方式,特别是在已经安装有Erlang的情况下,因为如果添加删除包的过程中有依赖,让 YUM 自动去解决是最省心的
f 可以指定格式 有如下几种格式 raw_json, long, pretty_json, kvp, tsv, table, bash 默认为 table [root@h102 rabbitmq]# rabbitmqadmin -----------------------------+------------------------------+---------------+ [root@h102 rabbitmq]# rabbitmqadmin -f bash list users guest [root@h102 rabbitmq]# ---- 定义一个 queue [root@h102 rabbitmq]# rabbitmqadmin list bindings No items [root@h102 rabbitmq]# rabbitmqadmin list queues No items [root@h102 rabbitmq]# rabbitmqadmin declare queue name=test durable=true queue declared [root@h102 rabbitmq]# rabbitmqadmin list queues
rabbitmqadmin 用法 [root@h102 rabbitmq]# rabbitmqadmin --help Usage ===== rabbitmqadmin [options] subcommand help subcommands # For a list of available subcommands rabbitmqadmin help config # For help with the configuration file [root@h102 rabbitmq]# rabbitmqadmin help subcommands Usage ===== rabbitmqadmin Example ======= # rabbitmqadmin.conf.example START [host_normal] hostname = localhost port END Use === rabbitmqadmin -c rabbitmqadmin.conf.example -N host_normal ...
查看 users [root@h102 rabbitmq]# rabbitmqadmin list users +-------+-----------------------------+------ -----------------------------+------------------------------+---------------+ [root@h102 rabbitmq]# rabbitmqadmin list users name +-------+ | name | +-------+ | guest | | test | +-------+ [root@h102 rabbitmq]# rabbitmqadmin | 13 | +------+----------+ [root@h102 rabbitmq]# ---- 查看 connections [root@h102 rabbitmq]# rabbitmqadmin list connections No items [root@h102 rabbitmq]# ---- 查看 exchanges [root@h102 rabbitmq]# rabbitmqadmin
是不是看着就头大,还是使用仓库的方法吧 ---- 下载仓库 [root@h102 rabbitmq]# wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm --2016-04-18 16:47:40-- http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm Resolving packages.erlang-solut
dependencies: erlang >= R16B-03 is needed by rabbitmq-server-3.6.1-1.noarch [root@h102 rabbitmq]# ---- 启动服务 rabbitmqadmin
启动插件 启用 rabbitmq_management 插件 [root@h102 rabbitmq]# rabbitmq-plugins list Configured: E = explicitly enabled; e = implicitly enabled | Status: * = running on rabbit@h102 |/ [ ] amqp_client 3.6.1 [ ] cowboy
发布一条消息 [root@h102 rabbitmq]# rabbitmqadmin list queues +------+----------+ | name | messages | +----- -+----------+ | test | 0 | +------+----------+ [root@h102 rabbitmq]# rabbitmqadmin publish routing_key =test payload="just for test" Message published [root@h102 rabbitmq]# rabbitmqadmin list queues +---- --------------+---------------+------------------+------------+-------------+ [root@h102 rabbitmq]# rabbitmqadmin name | messages | +------+----------+ | test | 1 | +------+----------+ [root@h102 rabbitmq]# rabbitmqadmin
详细可以参考 RabbitMQ 监控 但生产环境中经常没有访问web管理界面的条件,只提供了CLI界面,或者有些自动化的需求通过web界面无法完成,这时有没有一种直接在CLI环境下进行管理的方法呢,官方提供的 rabbitmqadmin 对于运维来说,个人感觉更倾向使用CLI的方式,因为虽然web的界面更友好,但是明显不如CLI快捷,CLI也可以结合其它命令进行更进一步的处理,比如将关键信息查出来后提供给集中的监控系统以触发报警 目前 rabbitmqadmin 看到汇总信息 申明和清除 exchanges, queues, bindings, vhosts, users and permissions 发布和获取消息 关闭连接和清空队列 导入导出配置 这里分享一下 rabbitmqadmin