1、概念

  RabbitMQ是AMQP(高级消息队列协议)协议的实现主要功能用于分布式应用当中的各组件间解耦。在传统C/S架构中,如果客户端发送一个请求消息,服务端必须得在线,有了中间件,客户端不是非得要服务端在线才可发送请求,客户端只需将请求消息发送给中间件,中间件负责存储和转发请求消息,此时如果服务端不在线,依然不妨碍客户端的请求可以发出,而客户端的请求此时有可能还会被正常服务;而对于消息型中间件最核心的组件有3个,分别是exchange(交换器)、binding(绑定器)、queue(队列);其中交换器的作用是把消息发出一方(简称生产者)发出的消息,通过交换器把消息发送给绑定器,绑定器根据匹配路由规则把消息路由给后端队列,然后订阅者再到对应的队列上取出消息进行消费,通常一个订阅者(消息消费者,或者叫用户也行)对应一个或多个队列;而订阅者与队列之间的信道(传递消息的通道)我们称之为channel(频道);也就说订阅者可以订阅一个或多个频道,一旦对应频道有消息产生,对应订阅者都会收到;一个消息该如何发送到对应的队列,这取决于我们的路由模式,路由模式通常我们通过绑定器进行定义;也就是说绑定器的主要作用就是用来定义交换器收到消息后该把消息发送到那个给队列;而对于路由模式来讲,它有多种,常见的有direct(点到点的直接路由)、topic(话题型过滤)、fan-out(删除)、headers(基于消息首部过滤);这些路由模式主要是用来过滤消息的,把符合我们定义的路由规则的消息过滤出来,发送到指定队列,所以我们也可以把路由模式称之为消息过滤器;简单点讲路由规则就是把交换器上的某一类消息绑定一个或多个队列;对于AMQP来讲,除了上面的4中路由模式以外,它还定义一个virtualhost的概念,所谓virtualhost就是虚拟主机,这里的虚拟主机主要是用来应用隔离,一个虚拟主机内部可以有exchange、binding、queue;它相当于一个单独broker,所以虚拟主机它可以将一个物理的broker划分成多个不同应用的broker;

  2、RabbitMQ架构

  提示:上图主要描述了生产者把消息通过交换器匹配路由规则(绑定器)把不同类型的消息通过绑定器把消息路由到不同的队列上,然后消费者根据自身订阅的频道,到不同频道对应的队列上取出消息进行消费的一个过程;

  3、RabbitMQ的安装配置

  在centos7上rabbitmq的安装非常简单,我们只需要配置好epel源,然后yum安装即可;

  1. [root@node1 ~]# yum repolist
  2. 已加载插件:fastestmirror, langpacks
  3. Loading mirror speeds from cached hostfile
  4. * base: mirrors.aliyun.com
  5. * extras: mirrors.aliyun.com
  6. * updates: mirrors.aliyun.com
  7. 源标识 源名称 状态
  8. !base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,070
  9. !docker-ce-stable/x86_64 Docker CE Stable - x86_64 79
  10. !epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,426
  11. !extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 413
  12. !updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 1,112
  13. repolist: 25,100
  14. [root@node1 ~]# yum install rabbitmq-server
  15. 已加载插件:fastestmirror, langpacks
  16. base | 3.6 kB 00:00:00
  17. docker-ce-stable | 3.5 kB 00:00:00
  18. epel | 4.7 kB 00:00:00
  19. extras | 2.9 kB 00:00:00
  20. updates | 2.9 kB 00:00:00
  21. (1/2): epel/x86_64/updateinfo | 1.0 MB 00:00:00
  22. (2/2): epel/x86_64/primary_db | 6.9 MB 00:00:01
  23. Loading mirror speeds from cached hostfile
  24. * base: mirrors.aliyun.com
  25. * extras: mirrors.aliyun.com
  26. * updates: mirrors.aliyun.com
  27. 正在解决依赖关系
  28. --> 正在检查事务
  29. ---> 软件包 rabbitmq-server.noarch.0.3.3.5-34.el7 将被 安装
  30. --> 正在处理依赖关系 erlang-erts >= R12B-3,它被软件包 rabbitmq-server-3.3.5-34.el7.noarch 需要
  31. ……省略部分内容……
  32. 已安装:
  33. rabbitmq-server.noarch 0:3.3.5-34.el7
  34.  
  35. 作为依赖被安装:
  36. erlang-asn1.x86_64 0:R16B-03.18.el7 erlang-compiler.x86_64 0:R16B-03.18.el7
  37. erlang-crypto.x86_64 0:R16B-03.18.el7 erlang-erts.x86_64 0:R16B-03.18.el7
  38. erlang-hipe.x86_64 0:R16B-03.18.el7 erlang-inets.x86_64 0:R16B-03.18.el7
  39. erlang-kernel.x86_64 0:R16B-03.18.el7 erlang-mnesia.x86_64 0:R16B-03.18.el7
  40. erlang-os_mon.x86_64 0:R16B-03.18.el7 erlang-otp_mibs.x86_64 0:R16B-03.18.el7
  41. erlang-public_key.x86_64 0:R16B-03.18.el7 erlang-runtime_tools.x86_64 0:R16B-03.18.el7
  42. erlang-sasl.x86_64 0:R16B-03.18.el7 erlang-sd_notify.x86_64 0:0.1-1.el7
  43. erlang-snmp.x86_64 0:R16B-03.18.el7 erlang-ssl.x86_64 0:R16B-03.18.el7
  44. erlang-stdlib.x86_64 0:R16B-03.18.el7 erlang-syntax_tools.x86_64 0:R16B-03.18.el7
  45. erlang-tools.x86_64 0:R16B-03.18.el7 erlang-xmerl.x86_64 0:R16B-03.18.el7
  46.  
  47. 完毕!
  48. [root@node1 ~]#

  提示:rabbitmq是erlang语言研发,所以安装rabbitmq-server这个包,它会依赖很多erlang包,而这些包都来自epel仓库,所以安装之前一定要先配置好epel源;

  查看rabbitmq-server安装生成了哪些文件

  1. [root@node1 ~]# rpm -ql rabbitmq-server
  2. /etc/logrotate.d/rabbitmq-server
  3. /etc/rabbitmq
  4. /etc/rabbitmq/rabbitmq.config
  5. /usr/lib/ocf/resource.d/rabbitmq/rabbitmq-server
  6. /usr/lib/rabbitmq/bin
  7. /usr/lib/rabbitmq/bin/rabbitmq-defaults
  8. /usr/lib/rabbitmq/bin/rabbitmq-env
  9. /usr/lib/rabbitmq/bin/rabbitmq-plugins
  10. /usr/lib/rabbitmq/bin/rabbitmq-server
  11. /usr/lib/rabbitmq/bin/rabbitmqctl
  12. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5
  13. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/ebin
  14. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/ebin/app_utils.beam
  15. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/ebin/background_gc.beam
  16. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/ebin/credit_flow.beam
  17. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/ebin/delegate.beam
  18. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/ebin/delegate_sup.beam
  19. ……省略部分内容……
  20. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin
  21. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/rabbitmq-defaults
  22. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/rabbitmq-env
  23. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/rabbitmq-plugins
  24. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/rabbitmq-server
  25. /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/rabbitmqctl
  26. /usr/lib/systemd/system/rabbitmq-server.service
  27. /usr/lib/tmpfiles.d/rabbitmq-server.conf
  28. /usr/sbin/rabbitmq-plugins
  29. /usr/sbin/rabbitmq-server
  30. /usr/sbin/rabbitmqctl
  31. ……省略部分内容……
  32. /var/log/rabbitmq
  33. /var/run/rabbitmq
  34. [root@node1 ~]#

  提示:/usr/sbin/rabbitmqctl 这个工具是命令行工具,主要用来管理rabbitmq;/usr/sbin/rabbitmq-plugins用来管理rabbitmq插件的命令行工具;/usr/sbin/rabbitmq-server服务器二进制主程序;/usr/lib/systemd/system/rabbitmq-server.service这个文件是它的基于systemd启动的unit file;/usr/lib/rabbitmq/bin/rabbitmq-defaults这个文件用于定义默认环境变量配置;/var/log/rabbitmq用于存放rabbitmq日志目录;/etc/rabbitmq/rabbitmq.config这个是rabbitmq的主配置文件,主要定义个组件访问权限,资源限制,插件及集群相关配置;rabbitmq的配置方式分3中,第一种是环境变量的方式,该方式主要用来定义网络参数以及配置文件路径相关配置;其次是配置文件的方式,配置文件主要定义服务器各组件间的访问权限,资源限制,插件以及集群相关配置;最后一种是运行时参数,这种方式主要用于定义rabbitmq集群的运行时参数;

  比较常用的环境变量

    RABBITMQ_BASE:用来指定rabbitmq的安装目录,这个目录主要存放rabbitmq数据库和日志相关文件。(一般用于windows,类unix上不常用)

    RABBITMQ_CONFIG_FILE:用于指定配置文件路径;

    RABBITMQ_LOGS:用于单独指定日志文件;

    RABBITMQ_NODE_IP_ADDRESS:用于指定节点监听的ip地址;

    RABBITMQ_NODE_PORT:用于指定节点监听的端口;

    RABBITMQ_NODE_NAME:用于指定节点名称;

    RABBITMQ_PLUGINS_DIR:用于指定插件目录;

  rabbitmq默认配置文件相关变量说明

    auth_mechanisms:用于定义rabbitmq的认证机制;

    default_user:定义默认用户;默认是guest;

    default_pass:定义默认用户的默认密码;默认是guest;

    default_premission:定义默认用户的默认权限;默认是".*" ".*" ".*";

    default_user_tags:定义默认用户的标签,默认是administrator;

    default_vhost:定义默认虚拟主机;默认是“/”;

    disk_free_limit:定义磁盘最少预留空间;默认50M;

    hearbeat:定义检测各组件存活的消息时长(心跳值);默认600秒;

    hipe_compile:用于指定是否使用hipe编译器编译程序;默认是true,表示使用hipe编译器;

    log_levels:用于指定日志级别,这里的日志级别只有四种,分别是none,error,warning,info;

    tcp_listeners:定义监听的地址和端口;默认是本机的所有地址的5672;

    ssl_listeners:定义基于ssl协议通信监听的地址和端口;默认是本机的所有地址的5672;

    vm_memory_high_watermark:定义内存的高水位标记,所谓高水位标记,就是用来指定内存的最少空闲内存空间;

  启动rabbitmq-server

  提示:以默认配置文件启动rabbitmq,它会监听5672和25672,25672是用来集群通信的端口;5672是rabbitmq的管理接口;除了这两个端口,如果开启了rabbitmq-management插件,它还会监听15672;rabbitmq-management这个插件主要提供了web图形化管理界面;

  4、rabbitmqctl使用

  rabbitmqctl帮助信息

  1. [root@node1 ~]# rabbitmqctl -h
  2. Error: could not recognise command
  3. Usage:
  4. rabbitmqctl [-n <node>] [-q] <command> [<command options>]
  5.  
  6. Options:
  7. -n node
  8. -q
  9.  
  10. Default node is "rabbit@server", where server is the local host. On a host
  11. named "server.example.com", the node name of the RabbitMQ Erlang node will
  12. usually be rabbit@server (unless RABBITMQ_NODENAME has been set to some
  13. non-default value at broker startup time). The output of hostname -s is usually
  14. the correct suffix to use after the "@" sign. See rabbitmq-server(1) for
  15. details of configuring the RabbitMQ broker.
  16.  
  17. Quiet output mode is selected with the "-q" flag. Informational messages are
  18. suppressed when quiet mode is in effect.
  19.  
  20. Commands:
  21. stop [<pid_file>]
  22. stop_app
  23. start_app
  24. wait <pid_file>
  25. reset
  26. force_reset
  27. rotate_logs <suffix>
  28.  
  29. join_cluster <clusternode> [--ram]
  30. cluster_status
  31. change_cluster_node_type disc | ram
  32. forget_cluster_node [--offline]
  33. update_cluster_nodes clusternode
  34. sync_queue queue
  35. cancel_sync_queue queue
  36. set_cluster_name name
  37.  
  38. add_user <username> <password>
  39. delete_user <username>
  40. change_password <username> <newpassword>
  41. clear_password <username>
  42. set_user_tags <username> <tag> ...
  43. list_users
  44.  
  45. add_vhost <vhostpath>
  46. delete_vhost <vhostpath>
  47. list_vhosts [<vhostinfoitem> ...]
  48. set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
  49. clear_permissions [-p <vhostpath>] <username>
  50. list_permissions [-p <vhostpath>]
  51. list_user_permissions <username>
  52.  
  53. set_parameter [-p <vhostpath>] <component_name> <name> <value>
  54. clear_parameter [-p <vhostpath>] <component_name> <key>
  55. list_parameters [-p <vhostpath>]
  56.  
  57. set_policy [-p <vhostpath>] [--priority <priority>] [--apply-to <apply-to>]
  58. <name> <pattern> <definition>
  59. clear_policy [-p <vhostpath>] <name>
  60. list_policies [-p <vhostpath>]
  61.  
  62. list_queues [-p <vhostpath>] [<queueinfoitem> ...]
  63. list_exchanges [-p <vhostpath>] [<exchangeinfoitem> ...]
  64. list_bindings [-p <vhostpath>] [<bindinginfoitem> ...]
  65. list_connections [<connectioninfoitem> ...]
  66. list_channels [<channelinfoitem> ...]
  67. list_consumers [-p <vhostpath>]
  68. status
  69. environment
  70. report
  71. eval <expr>
  72.  
  73. close_connection <connectionpid> <explanation>
  74. trace_on [-p <vhost>]
  75. trace_off [-p <vhost>]
  76. set_vm_memory_high_watermark <fraction>
  77.  
  78. <vhostinfoitem> must be a member of the list [name, tracing].
  79.  
  80. The list_queues, list_exchanges and list_bindings commands accept an optional
  81. virtual host parameter for which to display results. The default value is "/".
  82.  
  83. <queueinfoitem> must be a member of the list [name, durable, auto_delete,
  84. arguments, policy, pid, owner_pid, exclusive_consumer_pid,
  85. exclusive_consumer_tag, messages_ready, messages_unacknowledged, messages,
  86. consumers, consumer_utilisation, memory, slave_pids, synchronised_slave_pids,
  87. status].
  88.  
  89. <exchangeinfoitem> must be a member of the list [name, type, durable,
  90. auto_delete, internal, arguments, policy].
  91.  
  92. <bindinginfoitem> must be a member of the list [source_name, source_kind,
  93. destination_name, destination_kind, routing_key, arguments].
  94.  
  95. <connectioninfoitem> must be a member of the list [pid, name, port, host,
  96. peer_port, peer_host, ssl, ssl_protocol, ssl_key_exchange, ssl_cipher,
  97. ssl_hash, peer_cert_subject, peer_cert_issuer, peer_cert_validity, state,
  98. channels, protocol, auth_mechanism, user, vhost, timeout, frame_max,
  99. channel_max, client_properties, recv_oct, recv_cnt, send_oct, send_cnt,
  100. send_pend].
  101.  
  102. <channelinfoitem> must be a member of the list [pid, connection, name, number,
  103. user, vhost, transactional, confirm, consumer_count, messages_unacknowledged,
  104. messages_uncommitted, acks_uncommitted, messages_unconfirmed, prefetch_count,
  105. global_prefetch_count].
  106.  
  107. [root@node1 ~]#

  提示:从上面的帮助信息可以了解到rabbitmqctl这个工具有很多子命令;主要有对应用到管理相关子命令,对虚拟主机相关管理的,权限,用户,集群,策略等等;

  stop [<pid_file>]:停止rabbitmq-server;

  1. [root@node1 ~]# rabbitmqctl stop
  2. Stopping and halting node rabbit@node1 ...
  3. ...done.
  4. [root@node1 ~]# ss -tnl
  5. State Recv-Q Send-Q Local Address:Port Peer Address:Port
  6. LISTEN 0 5 192.168.122.1:53 *:*
  7. LISTEN 0 128 *:22 *:*
  8. LISTEN 0 128 127.0.0.1:631 *:*
  9. LISTEN 0 100 127.0.0.1:25 *:*
  10. LISTEN 0 100 127.0.0.1:64667 *:*
  11. LISTEN 0 128 *:8000 *:*
  12. LISTEN 0 128 *:8001 *:*
  13. LISTEN 0 5 127.0.0.1:8010 *:*
  14. LISTEN 0 128 *:111 *:*
  15. LISTEN 0 128 *:80 *:*
  16. LISTEN 0 128 :::22 :::*
  17. LISTEN 0 128 ::1:631 :::*
  18. LISTEN 0 100 ::1:25 :::*
  19. LISTEN 0 128 :::111 :::*
  20. LISTEN 0 128 :::80 :::*
  21. [root@node1 ~]#

  提示:rabbitmqctl stop 就相当于把rabbitmq服务给杀死,停止服务;

  stop_app:停止rabbitmq-server上的所有应用;

  1. [root@node1 ~]# rabbitmqctl status
  2. Status of node rabbit@node1 ...
  3. [{pid,18223},
  4. {running_applications,[{rabbit,"RabbitMQ","3.3.5"},
  5. {os_mon,"CPO CXC 138 46","2.2.14"},
  6. {mnesia,"MNESIA CXC 138 12","4.11"},
  7. {xmerl,"XML parser","1.3.6"},
  8. {sasl,"SASL CXC 138 11","2.3.4"},
  9. {stdlib,"ERTS CXC 138 10","1.19.4"},
  10. {kernel,"ERTS CXC 138 10","2.16.4"}]},
  11. {os,{unix,linux}},
  12. {erlang_version,"Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"},
  13. {memory,[{total,36262168},
  14. {connection_procs,2800},
  15. {queue_procs,5600},
  16. {plugins,0},
  17. {other_proc,13729216},
  18. {mnesia,60144},
  19. {mgmt_db,0},
  20. {msg_index,21880},
  21. {other_ets,756824},
  22. {binary,19048},
  23. {code,16707498},
  24. {atom,602729},
  25. {other_system,4356429}]},
  26. {alarms,[]},
  27. {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},
  28. {vm_memory_high_watermark,0.4},
  29. {vm_memory_limit,1581588480},
  30. {disk_free_limit,50000000},
  31. {disk_free,39834275840},
  32. {file_descriptors,[{total_limit,924},
  33. {total_used,3},
  34. {sockets_limit,829},
  35. {sockets_used,1}]},
  36. {processes,[{limit,1048576},{used,127}]},
  37. {run_queue,0},
  38. {uptime,367}]
  39. ...done.
  40. [root@node1 ~]# rabbitmqctl stop_app
  41. Stopping node rabbit@node1 ...
  42. ...done.
  43. [root@node1 ~]# rabbitmqctl status
  44. Status of node rabbit@node1 ...
  45. [{pid,18223},
  46. {running_applications,[{xmerl,"XML parser","1.3.6"},
  47. {sasl,"SASL CXC 138 11","2.3.4"},
  48. {stdlib,"ERTS CXC 138 10","1.19.4"},
  49. {kernel,"ERTS CXC 138 10","2.16.4"}]},
  50. {os,{unix,linux}},
  51. {erlang_version,"Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"},
  52. {memory,[{total,35566624},
  53. {connection_procs,0},
  54. {queue_procs,0},
  55. {plugins,0},
  56. {other_proc,13300856},
  57. {mnesia,0},
  58. {mgmt_db,0},
  59. {msg_index,0},
  60. {other_ets,607888},
  61. {binary,12600},
  62. {code,16707498},
  63. {atom,602729},
  64. {other_system,4335053}]},
  65. {alarms,[]},
  66. {listeners,[]},
  67. {processes,[{limit,1048576},{used,46}]},
  68. {run_queue,0},
  69. {uptime,384}]
  70. ...done.
  71. [root@node1 ~]# ss -tnl
  72. State Recv-Q Send-Q Local Address:Port Peer Address:Port
  73. LISTEN 0 5 192.168.122.1:53 *:*
  74. LISTEN 0 128 *:22 *:*
  75. LISTEN 0 128 127.0.0.1:631 *:*
  76. LISTEN 0 100 127.0.0.1:25 *:*
  77. LISTEN 0 100 127.0.0.1:64667 *:*
  78. LISTEN 0 128 *:8000 *:*
  79. LISTEN 0 128 *:8001 *:*
  80. LISTEN 0 128 *:25672 *:*
  81. LISTEN 0 5 127.0.0.1:8010 *:*
  82. LISTEN 0 128 *:111 *:*
  83. LISTEN 0 128 *:80 *:*
  84. LISTEN 0 128 *:4369 *:*
  85. LISTEN 0 128 :::22 :::*
  86. LISTEN 0 128 ::1:631 :::*
  87. LISTEN 0 100 ::1:25 :::*
  88. LISTEN 0 128 :::111 :::*
  89. LISTEN 0 128 :::80 :::*
  90. LISTEN 0 128 :::4369 :::*
  91. [root@node1 ~]#

  提示:rabbitmqctl stop_app这个命令只是停止rabbitmq上的应用,而非停止rabbitmq服务;所以监听的端口信息都还在;rabbitmqctl status是查看rabbitmq的状态信息;

  start_app:启动已有应用;

  1. [root@node1 ~]# rabbitmqctl status
  2. Status of node rabbit@node1 ...
  3. [{pid,18223},
  4. {running_applications,[{xmerl,"XML parser","1.3.6"},
  5. {sasl,"SASL CXC 138 11","2.3.4"},
  6. {stdlib,"ERTS CXC 138 10","1.19.4"},
  7. {kernel,"ERTS CXC 138 10","2.16.4"}]},
  8. {os,{unix,linux}},
  9. {erlang_version,"Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"},
  10. {memory,[{total,35564488},
  11. {connection_procs,0},
  12. {queue_procs,0},
  13. {plugins,0},
  14. {other_proc,13299600},
  15. {mnesia,0},
  16. {mgmt_db,0},
  17. {msg_index,0},
  18. {other_ets,607888},
  19. {binary,12600},
  20. {code,16707498},
  21. {atom,602729},
  22. {other_system,4334173}]},
  23. {alarms,[]},
  24. {listeners,[]},
  25. {processes,[{limit,1048576},{used,46}]},
  26. {run_queue,0},
  27. {uptime,495}]
  28. ...done.
  29. [root@node1 ~]# rabbitmqctl start_app
  30. Starting node rabbit@node1 ...
  31. ...done.
  32. [root@node1 ~]# rabbitmqctl status
  33. Status of node rabbit@node1 ...
  34. [{pid,18223},
  35. {running_applications,[{rabbit,"RabbitMQ","3.3.5"},
  36. {os_mon,"CPO CXC 138 46","2.2.14"},
  37. {mnesia,"MNESIA CXC 138 12","4.11"},
  38. {xmerl,"XML parser","1.3.6"},
  39. {sasl,"SASL CXC 138 11","2.3.4"},
  40. {stdlib,"ERTS CXC 138 10","1.19.4"},
  41. {kernel,"ERTS CXC 138 10","2.16.4"}]},
  42. {os,{unix,linux}},
  43. {erlang_version,"Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"},
  44. {memory,[{total,36211968},
  45. {connection_procs,2800},
  46. {queue_procs,5600},
  47. {plugins,0},
  48. {other_proc,13678784},
  49. {mnesia,60144},
  50. {mgmt_db,0},
  51. {msg_index,21928},
  52. {other_ets,756792},
  53. {binary,19048},
  54. {code,16707530},
  55. {atom,602729},
  56. {other_system,4356613}]},
  57. {alarms,[]},
  58. {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},
  59. {vm_memory_high_watermark,0.4},
  60. {vm_memory_limit,1581588480},
  61. {disk_free_limit,50000000},
  62. {disk_free,39833972736},
  63. {file_descriptors,[{total_limit,924},
  64. {total_used,3},
  65. {sockets_limit,829},
  66. {sockets_used,1}]},
  67. {processes,[{limit,1048576},{used,127}]},
  68. {run_queue,0},
  69. {uptime,513}]
  70. ...done.
  71. [root@node1 ~]#

  提示:可以看到application中多了mnesia,rabbit,os_mon这3个app的信息;

  reset:重置;

  force_reset:强制重置;

  用户管理相关子命令

    list_users:查看用户列表;

  1. [root@node1 ~]# rabbitmqctl list_users
  2. Listing users ...
  3. guest [administrator]
  4. ...done.
  5. [root@node1 ~]#

  提示:默认只有grest用户,这个用户的标签是administrator,表示这是一个管理员;

    add_user <username> <password>:添加用户;

  1. [root@node1 ~]# rabbitmqctl add_user qiuhom test
  2. Creating user "qiuhom" ...
  3. ...done.
  4. [root@node1 ~]# rabbitmqctl list_users
  5. Listing users ...
  6. guest [administrator]
  7. qiuhom []
  8. ...done.
  9. [root@node1 ~]#

  提示:添加用户必须指定用户名和密码;默认添加到用户都是普通用户,就是没有任何标签的用户;

    delete_user <username>:删除指定用户;

  1. [root@node1 ~]# rabbitmqctl delete_user qiuhom
  2. Deleting user "qiuhom" ...
  3. ...done.
  4. [root@node1 ~]# rabbitmqctl list_users
  5. Listing users ...
  6. guest [administrator]
  7. ...done.
  8. [root@node1 ~]#

  提示:删除用户只需指定用户名即可;

    change_password <username> <newpassword>:修改指定用户密码;

  1. [root@node1 ~]# rabbitmqctl change_password guest admin
  2. Changing password for user "guest" ...
  3. ...done.
  4. [root@node1 ~]#

  提示:以上表示修改guest用户的命名为admin;如果我们开启了web管理界面就可以来测试guest用户的密码,如果使用admin能够登录到管理界面说明密码修改成功了,不能说明没有修改成功,guest用户的默认密码是guest;

  验证:开启rabbitmq-mangerment插件,看看对应guest用户的密码是否更改了?

  1. [root@node1 ~]# rabbitmq-plugins list
  2. [ ] amqp_client 3.3.5
  3. [ ] cowboy 0.5.0-rmq3.3.5-git4b93c2d
  4. [ ] eldap 3.3.5-gite309de4
  5. [ ] mochiweb 2.7.0-rmq3.3.5-git680dba8
  6. [ ] rabbitmq_amqp1_0 3.3.5
  7. [ ] rabbitmq_auth_backend_ldap 3.3.5
  8. [ ] rabbitmq_auth_mechanism_ssl 3.3.5
  9. [ ] rabbitmq_consistent_hash_exchange 3.3.5
  10. [ ] rabbitmq_federation 3.3.5
  11. [ ] rabbitmq_federation_management 3.3.5
  12. [ ] rabbitmq_management 3.3.5
  13. [ ] rabbitmq_management_agent 3.3.5
  14. [ ] rabbitmq_management_visualiser 3.3.5
  15. [ ] rabbitmq_mqtt 3.3.5
  16. [ ] rabbitmq_shovel 3.3.5
  17. [ ] rabbitmq_shovel_management 3.3.5
  18. [ ] rabbitmq_stomp 3.3.5
  19. [ ] rabbitmq_test 3.3.5
  20. [ ] rabbitmq_tracing 3.3.5
  21. [ ] rabbitmq_web_dispatch 3.3.5
  22. [ ] rabbitmq_web_stomp 3.3.5
  23. [ ] rabbitmq_web_stomp_examples 3.3.5
  24. [ ] sockjs 0.3.4-rmq3.3.5-git3132eb9
  25. [ ] webmachine 1.10.3-rmq3.3.5-gite9359c7
  26. [root@node1 ~]# rabbitmq-plugins enable rabbitmq_management
  27. The following plugins have been enabled:
  28. mochiweb
  29. webmachine
  30. rabbitmq_web_dispatch
  31. amqp_client
  32. rabbitmq_management_agent
  33. rabbitmq_management
  34. Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
  35. [root@node1 ~]# rabbitmq-plugins list
  36. [e] amqp_client 3.3.5
  37. [ ] cowboy 0.5.0-rmq3.3.5-git4b93c2d
  38. [ ] eldap 3.3.5-gite309de4
  39. [e] mochiweb 2.7.0-rmq3.3.5-git680dba8
  40. [ ] rabbitmq_amqp1_0 3.3.5
  41. [ ] rabbitmq_auth_backend_ldap 3.3.5
  42. [ ] rabbitmq_auth_mechanism_ssl 3.3.5
  43. [ ] rabbitmq_consistent_hash_exchange 3.3.5
  44. [ ] rabbitmq_federation 3.3.5
  45. [ ] rabbitmq_federation_management 3.3.5
  46. [E] rabbitmq_management 3.3.5
  47. [e] rabbitmq_management_agent 3.3.5
  48. [ ] rabbitmq_management_visualiser 3.3.5
  49. [ ] rabbitmq_mqtt 3.3.5
  50. [ ] rabbitmq_shovel 3.3.5
  51. [ ] rabbitmq_shovel_management 3.3.5
  52. [ ] rabbitmq_stomp 3.3.5
  53. [ ] rabbitmq_test 3.3.5
  54. [ ] rabbitmq_tracing 3.3.5
  55. [e] rabbitmq_web_dispatch 3.3.5
  56. [ ] rabbitmq_web_stomp 3.3.5
  57. [ ] rabbitmq_web_stomp_examples 3.3.5
  58. [ ] sockjs 0.3.4-rmq3.3.5-git3132eb9
  59. [e] webmachine 1.10.3-rmq3.3.5-gite9359c7
  60. [root@node1 ~]#

  提示:启用插件需要用rabbitmq-plugins命令,enable表示启用指定插件,disable表示禁用指定插件,list表示列出插件列表;其中列出插件列表前边中括号中的大写E表示手动开启的插件,小写e表示手动开启插件依赖的插件,自动开启的;

  重启rabbitmq-server服务

  提示:启用了插件,必须要重启服务才能够正常使用插件,从上的信息可以看到我们启用了rabbitmq-mangement插件,重启rabbitmq-server服务后,对应的15672端口就处于监听状态了;

  登录宿主机的15672端口,访问web管理界面

  提示:用guest用户使用admin密码是能够登录到管理界面,说明我们更改密码成功了;其实很多命令行能够管理的,我们都可以基于这个web管理界面进行管理;

    set_user_tags <username> <tag> ...:设置指定用户的标签;

  1. [root@node1 ~]# rabbitmqctl add_user qiuhom test
  2. Creating user "qiuhom" ...
  3. ...done.
  4. [root@node1 ~]# rabbitmqctl list_users
  5. Listing users ...
  6. guest [administrator]
  7. qiuhom []
  8. ...done.
  9. [root@node1 ~]# rabbitmqctl set_user_tags qiuhom administrator
  10. Setting tags for user "qiuhom" to [administrator] ...
  11. ...done.
  12. [root@node1 ~]# rabbitmqctl list_users
  13. Listing users ...
  14. guest [administrator]
  15. qiuhom [administrator]
  16. ...done.
  17. [root@node1 ~]# rabbitmqctl set_user_tags qiuhom
  18. Setting tags for user "qiuhom" to [] ...
  19. ...done.
  20. [root@node1 ~]# rabbitmqctl list_users
  21. Listing users ...
  22. guest [administrator]
  23. qiuhom []
  24. ...done.
  25. [root@node1 ~]#

  提示:如果用户名后面不指定任何标签,相当于把原有的标签信息清空;标签为administrator的用户拥有登录web管理界面的权限;

    clear_password <username>:清空指定用户的密码;

  1. [root@node1 ~]# rabbitmqctl clear_password qiuhom
  2. Clearing password for user "qiuhom" ...
  3. ...done.
  4. [root@node1 ~]#

  虚拟主机相关管理子命令

    list_vhosts [<vhostinfoitem> ...]:列出虚拟主机列表;

  1. [root@node1 ~]# rabbitmqctl list_vhosts
  2. Listing vhosts ...
  3. /
  4. ...done.
  5. [root@node1 ~]#

  提示:默认只有“/”这个虚拟主机;

    add_vhost <vhostpath>:添加虚拟主机;

  1. [root@node1 ~]# rabbitmqctl add_vhost /qiuhom/test
  2. Creating vhost "/qiuhom/test" ...
  3. ...done.
  4. [root@node1 ~]# rabbitmqctl list_vhosts
  5. Listing vhosts ...
  6. /
  7. /qiuhom/test
  8. ...done.
  9. [root@node1 ~]#

    delete_vhost <vhostpath>:删除虚拟主机;

  1. [root@node1 ~]# rabbitmqctl delete_vhost /qiuhom/test
  2. Deleting vhost "/qiuhom/test" ...
  3. ...done.
  4. [root@node1 ~]# rabbitmqctl list_vhosts
  5. Listing vhosts ...
  6. /
  7. ...done.
  8. [root@node1 ~]#

  权限相关管理子命令

    list_permissions [-p <vhostpath>]:列出指定虚拟主机权限,不指定表示查看默认虚拟主机的权限(这个是以虚拟主机查看权限);

  1. [root@node1 ~]# rabbitmqctl list_permissions
  2. Listing permissions in vhost "/" ...
  3. guest .* .* .*
  4. ...done.
  5. [root@node1 ~]# rabbitmqctl add_vhost /qiuhom/test
  6. Creating vhost "/qiuhom/test" ...
  7. ...done.
  8. [root@node1 ~]# rabbitmqctl list_permissions
  9. Listing permissions in vhost "/" ...
  10. guest .* .* .*
  11. ...done.
  12. [root@node1 ~]# rabbitmqctl list_permissions -p /qiuhom/test
  13. Listing permissions in vhost "/qiuhom/test" ...
  14. ...done.
  15. [root@node1 ~]#

  提示:默认虚拟主机上“/”,guest用户对“/”这个虚拟主机以下的所有组件有访问权限;其中第一个.*表示配置文件,第二个.*表示写权限,第三个是读权限;

    list_user_permissions <username>:列出指定用户的权限(能够对那些虚拟主机进行哪些操作,这个是以用户名去查看权限)

  1. [root@node1 ~]# rabbitmqctl list_user_permissions guest
  2. Listing permissions for user "guest" ...
  3. / .* .* .*
  4. ...done.
  5. [root@node1 ~]#

  提示:以上表示查看guest这个用户所有虚拟主机上的权限;这里需要注意一点虚拟主机都是以/开始的树状结构,且支持继承,所谓继承就表示一某个虚拟主机开始一下所有子虚拟主机都有相同的权限;以上guest就对所有虚拟主机有访问权限;

    set_permissions [-p <vhostpath>] <user> <conf> <write> <read>:设置权限,不指定虚拟主机表示给默认虚拟主机设定权限;

  1. [root@node1 ~]# rabbitmqctl list_users
  2. Listing users ...
  3. guest [administrator]
  4. qiuhom []
  5. ...done.
  6. [root@node1 ~]# rabbitmqctl list_vhosts
  7. Listing vhosts ...
  8. /
  9. /qiuhom/test
  10. ...done.
  11. [root@node1 ~]# rabbitmqctl set_permissions qiuhom ".*" ".*" ".*"
  12. Setting permissions for user "qiuhom" in vhost "/" ...
  13. ...done.
  14. [root@node1 ~]# rabbitmqctl list_permissions
  15. Listing permissions in vhost "/" ...
  16. guest .* .* .*
  17. qiuhom .* .* .*
  18. ...done.
  19. [root@node1 ~]# rabbitmqctl set_permissions -p /qiuhom/test qiuhom ".*" ".*" ".*"
  20. Setting permissions for user "qiuhom" in vhost "/qiuhom/test" ...
  21. ...done.
  22. [root@node1 ~]# rabbitmqctl list_permissions
  23. Listing permissions in vhost "/" ...
  24. guest .* .* .*
  25. qiuhom .* .* .*
  26. ...done.
  27. [root@node1 ~]#rabbitmqctl list_permissions -p /qiuhom/test
  28. Listing permissions in vhost "/qiuhom/test" ...
  29. qiuhom .* .* .*
  30. ...done.
  31. [root@node1 ~]#

    clear_permissions [-p <vhostpath>] <username>:清空指定用户对某虚拟主机的权限,默认不指定虚拟主机表示默认虚拟主机;

  1. [root@node1 ~]# rabbitmqctl list_permissions -p /qiuhom/test
  2. Listing permissions in vhost "/qiuhom/test" ...
  3. qiuhom .* .* .*
  4. ...done.
  5. [root@node1 ~]# rabbitmqctl list_user_permissions qiuhom
  6. Listing permissions for user "qiuhom" ...
  7. / .* .* .*
  8. /qiuhom/test .* .* .*
  9. ...done.
  10. [root@node1 ~]# rabbitmqctl clear_permissions -p / qiuhom
  11. Clearing permissions for user "qiuhom" in vhost "/" ...
  12. ...done.
  13. [root@node1 ~]# rabbitmqctl list_user_permissions qiuhom
  14. Listing permissions for user "qiuhom" ...
  15. /qiuhom/test .* .* .*
  16. ...done.
  17. [root@node1 ~]# rabbitmqctl list_permissions -p /
  18. Listing permissions in vhost "/" ...
  19. guest .* .* .*
  20. ...done.
  21. [root@node1 ~]# rabbitmqctl clear_permissions -p /qiuhom/test qiuhom
  22. Clearing permissions for user "qiuhom" in vhost "/qiuhom/test" ...
  23. ...done.
  24. [root@node1 ~]# rabbitmqctl list_permissions -p /qiuhom/test
  25. Listing permissions in vhost "/qiuhom/test" ...
  26. ...done.
  27. [root@node1 ~]#

  组件查看类子命令

    list_queues [-p <vhostpath>] [<queueinfoitem> ...]:列出队列;

  1. [root@node1 ~]# rabbitmqctl list_queues
  2. Listing queues ...
  3. ...done.
  4. [root@node1 ~]#

    list_exchanges [-p <vhostpath>] [<exchangeinfoitem> ...]:列出交换器;

  1. [root@node1 ~]# rabbitmqctl list_exchanges
  2. Listing exchanges ...
  3. direct
  4. amq.direct direct
  5. amq.fanout fanout
  6. amq.headers headers
  7. amq.match headers
  8. amq.rabbitmq.log topic
  9. amq.rabbitmq.trace topic
  10. amq.topic topic
  11. ...done.
  12. [root@node1 ~]#

    list_bindings [-p <vhostpath>] [<bindinginfoitem> ...]:列出绑定器;

  1. [root@node1 ~]# rabbitmqctl list_bindings
  2. Listing bindings ...
  3. ...done.
  4. [root@node1 ~]#

    list_connections [<connectioninfoitem> ...]:列出连接列表

  1. [root@node1 ~]# rabbitmqctl list_connections
  2. Listing connections ...
  3. ...done.
  4. [root@node1 ~]#

    list_channels [<channelinfoitem> ...]:列出频道

  1. [root@node1 ~]# rabbitmqctl list_channels
  2. Listing channels ...
  3. ...done.
  4. [root@node1 ~]#

  提示:上面这些组件我们除了可以在命令通过子命令的方式查看,其实在web管理界面也给我们提供了一个api访问接口;

  在web界面访问api接口查看虚拟主机

  在web界面查看用户列表

  提示:需要查看某类组件的信息,可以在api后面加上对应组件的名称作为rui即可访问,当然有了这个api接口,程序员就可以调用这个接口从而对rabbitmq进行操作;具体操作文档可访问对应宿主机的15672/api查看示例;

    list_consumers [-p <vhostpath>]:列出消费者

  1. [root@node1 ~]# rabbitmqctl list_consumers
  2. Listing consumers ...
  3. ...done.
  4. [root@node1 ~]#

    status:查看rabbitmq的状态信息;

  1. [root@node1 ~]# rabbitmqctl status
  2. Status of node rabbit@node1 ...
  3. [{pid,20202},
  4. {running_applications,
  5. [{rabbitmq_management,"RabbitMQ Management Console","3.3.5"},
  6. {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.3.5"},
  7. {webmachine,"webmachine","1.10.3-rmq3.3.5-gite9359c7"},
  8. {mochiweb,"MochiMedia Web Server","2.7.0-rmq3.3.5-git680dba8"},
  9. {rabbitmq_management_agent,"RabbitMQ Management Agent","3.3.5"},
  10. {rabbit,"RabbitMQ","3.3.5"},
  11. {os_mon,"CPO CXC 138 46","2.2.14"},
  12. {inets,"INETS CXC 138 49","5.9.8"},
  13. {mnesia,"MNESIA CXC 138 12","4.11"},
  14. {amqp_client,"RabbitMQ AMQP Client","3.3.5"},
  15. {xmerl,"XML parser","1.3.6"},
  16. {sasl,"SASL CXC 138 11","2.3.4"},
  17. {stdlib,"ERTS CXC 138 10","1.19.4"},
  18. {kernel,"ERTS CXC 138 10","2.16.4"}]},
  19. {os,{unix,linux}},
  20. {erlang_version,
  21. "Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"},
  22. {memory,
  23. [{total,40816096},
  24. {connection_procs,5600},
  25. {queue_procs,5600},
  26. {plugins,432624},
  27. {other_proc,13494248},
  28. {mnesia,64144},
  29. {mgmt_db,45376},
  30. {msg_index,34528},
  31. {other_ets,1085424},
  32. {binary,119600},
  33. {code,20229052},
  34. {atom,711569},
  35. {other_system,4588331}]},
  36. {alarms,[]},
  37. {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},
  38. {vm_memory_high_watermark,0.4},
  39. {vm_memory_limit,1581588480},
  40. {disk_free_limit,50000000},
  41. {disk_free,39831085056},
  42. {file_descriptors,
  43. [{total_limit,924},{total_used,3},{sockets_limit,829},{sockets_used,1}]},
  44. {processes,[{limit,1048576},{used,181}]},
  45. {run_queue,0},
  46. {uptime,5271}]
  47. ...done.
  48. [root@node1 ~]#

    environment:查看环境变量;

  1. [root@node1 ~]# rabbitmqctl environment
  2. Application environment of node rabbit@node1 ...
  3. [{auth_backends,[rabbit_auth_backend_internal]},
  4. {auth_mechanisms,['PLAIN','AMQPLAIN']},
  5. {backing_queue_module,rabbit_variable_queue},
  6. {channel_max,0},
  7. {channel_operation_timeout,70000},
  8. {cluster_nodes,{[],disc}},
  9. {cluster_partition_handling,ignore},
  10. {collect_statistics,fine},
  11. {collect_statistics_interval,5000},
  12. {default_permissions,[<<".*">>,<<".*">>,<<".*">>]},
  13. {default_user,<<"guest">>},
  14. {default_user_tags,[administrator]},
  15. {default_vhost,<<"/">>},
  16. {delegate_count,16},
  17. {disk_free_limit,50000000},
  18. {enabled_plugins_file,"/etc/rabbitmq/enabled_plugins"},
  19. {error_logger,{file,"/var/log/rabbitmq/rabbit@node1.log"}},
  20. {frame_max,131072},
  21. {halt_on_upgrade_failure,true},
  22. {heartbeat,580},
  23. {hipe_compile,false},
  24. {hipe_modules,[rabbit_reader,rabbit_channel,gen_server2,rabbit_exchange,
  25. rabbit_command_assembler,rabbit_framing_amqp_0_9_1,
  26. rabbit_basic,rabbit_event,lists,queue,priority_queue,
  27. rabbit_router,rabbit_trace,rabbit_misc,rabbit_binary_parser,
  28. rabbit_exchange_type_direct,rabbit_guid,rabbit_net,
  29. rabbit_amqqueue_process,rabbit_variable_queue,
  30. rabbit_binary_generator,rabbit_writer,delegate,gb_sets,lqueue,
  31. sets,orddict,rabbit_amqqueue,rabbit_limiter,gb_trees,
  32. rabbit_queue_index,rabbit_exchange_decorator,gen,dict,ordsets,
  33. file_handle_cache,rabbit_msg_store,array,
  34. rabbit_msg_store_ets_index,rabbit_msg_file,
  35. rabbit_exchange_type_fanout,rabbit_exchange_type_topic,mnesia,
  36. mnesia_lib,rpc,mnesia_tm,qlc,sofs,proplists,credit_flow,pmon,
  37. ssl_connection,tls_connection,ssl_record,tls_record,gen_fsm,
  38. ssl]},
  39. {included_applications,[]},
  40. {log_levels,[{connection,info}]},
  41. {loopback_users,[]},
  42. {msg_store_file_size_limit,16777216},
  43. {msg_store_index_module,rabbit_msg_store_ets_index},
  44. {plugins_dir,"/usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/../plugins"},
  45. {plugins_expand_dir,"/var/lib/rabbitmq/mnesia/rabbit@node1-plugins-expand"},
  46. {queue_index_max_journal_entries,65536},
  47. {reverse_dns_lookups,false},
  48. {sasl_error_logger,{file,"/var/log/rabbitmq/rabbit@node1-sasl.log"}},
  49. {server_properties,[]},
  50. {ssl_apps,[asn1,crypto,public_key,ssl]},
  51. {ssl_cert_login_from,distinguished_name},
  52. {ssl_listeners,[]},
  53. {ssl_options,[]},
  54. {tcp_listen_options,[binary,
  55. {packet,raw},
  56. {reuseaddr,true},
  57. {backlog,128},
  58. {nodelay,true},
  59. {linger,{true,0}},
  60. {exit_on_close,false}]},
  61. {tcp_listeners,[5672]},
  62. {trace_vhosts,[]},
  63. {vm_memory_high_watermark,0.4},
  64. {vm_memory_high_watermark_paging_ratio,0.5}]
  65. ...done.
  66. [root@node1 ~]#

    report:生成系统状态报告;

  1. [root@node1 ~]# rabbitmqctl report
  2. Reporting server status on {{2020,8,25},{16,18,8}}
  3.  
  4. ...
  5. Status of node rabbit@node1 ...
  6. [{pid,20202},
  7. {running_applications,
  8. [{rabbitmq_management,"RabbitMQ Management Console","3.3.5"},
  9. {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.3.5"},
  10. {webmachine,"webmachine","1.10.3-rmq3.3.5-gite9359c7"},
  11. {mochiweb,"MochiMedia Web Server","2.7.0-rmq3.3.5-git680dba8"},
  12. {rabbitmq_management_agent,"RabbitMQ Management Agent","3.3.5"},
  13. {rabbit,"RabbitMQ","3.3.5"},
  14. {os_mon,"CPO CXC 138 46","2.2.14"},
  15. {inets,"INETS CXC 138 49","5.9.8"},
  16. {mnesia,"MNESIA CXC 138 12","4.11"},
  17. {amqp_client,"RabbitMQ AMQP Client","3.3.5"},
  18. {xmerl,"XML parser","1.3.6"},
  19. {sasl,"SASL CXC 138 11","2.3.4"},
  20. {stdlib,"ERTS CXC 138 10","1.19.4"},
  21. {kernel,"ERTS CXC 138 10","2.16.4"}]},
  22. {os,{unix,linux}},
  23. {erlang_version,
  24. "Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"},
  25. {memory,
  26. [{total,40510448},
  27. {connection_procs,5600},
  28. {queue_procs,5600},
  29. {plugins,208520},
  30. {other_proc,13407608},
  31. {mnesia,64144},
  32. {mgmt_db,50256},
  33. {msg_index,34528},
  34. {other_ets,1085424},
  35. {binary,119648},
  36. {code,20229052},
  37. {atom,711569},
  38. {other_system,4588499}]},
  39. {alarms,[]},
  40. {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},
  41. {vm_memory_high_watermark,0.4},
  42. {vm_memory_limit,1581588480},
  43. {disk_free_limit,50000000},
  44. {disk_free,39831064576},
  45. {file_descriptors,
  46. [{total_limit,924},{total_used,3},{sockets_limit,829},{sockets_used,1}]},
  47. {processes,[{limit,1048576},{used,181}]},
  48. {run_queue,0},
  49. {uptime,5347}]
  50.  
  51. Cluster status of node rabbit@node1 ...
  52. [{nodes,[{disc,[rabbit@node1]}]},
  53. {running_nodes,[rabbit@node1]},
  54. {cluster_name,<<"rabbit@node1">>},
  55. {partitions,[]}]
  56.  
  57. Application environment of node rabbit@node1 ...
  58. [{auth_backends,[rabbit_auth_backend_internal]},
  59. {auth_mechanisms,['PLAIN','AMQPLAIN']},
  60. {backing_queue_module,rabbit_variable_queue},
  61. {channel_max,0},
  62. {channel_operation_timeout,70000},
  63. {cluster_nodes,{[],disc}},
  64. {cluster_partition_handling,ignore},
  65. {collect_statistics,fine},
  66. {collect_statistics_interval,5000},
  67. {default_permissions,[<<".*">>,<<".*">>,<<".*">>]},
  68. {default_user,<<"guest">>},
  69. {default_user_tags,[administrator]},
  70. {default_vhost,<<"/">>},
  71. {delegate_count,16},
  72. {disk_free_limit,50000000},
  73. {enabled_plugins_file,"/etc/rabbitmq/enabled_plugins"},
  74. {error_logger,{file,"/var/log/rabbitmq/rabbit@node1.log"}},
  75. {frame_max,131072},
  76. {halt_on_upgrade_failure,true},
  77. {heartbeat,580},
  78. {hipe_compile,false},
  79. {hipe_modules,[rabbit_reader,rabbit_channel,gen_server2,rabbit_exchange,
  80. rabbit_command_assembler,rabbit_framing_amqp_0_9_1,
  81. rabbit_basic,rabbit_event,lists,queue,priority_queue,
  82. rabbit_router,rabbit_trace,rabbit_misc,rabbit_binary_parser,
  83. rabbit_exchange_type_direct,rabbit_guid,rabbit_net,
  84. rabbit_amqqueue_process,rabbit_variable_queue,
  85. rabbit_binary_generator,rabbit_writer,delegate,gb_sets,lqueue,
  86. sets,orddict,rabbit_amqqueue,rabbit_limiter,gb_trees,
  87. rabbit_queue_index,rabbit_exchange_decorator,gen,dict,ordsets,
  88. file_handle_cache,rabbit_msg_store,array,
  89. rabbit_msg_store_ets_index,rabbit_msg_file,
  90. rabbit_exchange_type_fanout,rabbit_exchange_type_topic,mnesia,
  91. mnesia_lib,rpc,mnesia_tm,qlc,sofs,proplists,credit_flow,pmon,
  92. ssl_connection,tls_connection,ssl_record,tls_record,gen_fsm,
  93. ssl]},
  94. {included_applications,[]},
  95. {log_levels,[{connection,info}]},
  96. {loopback_users,[]},
  97. {msg_store_file_size_limit,16777216},
  98. {msg_store_index_module,rabbit_msg_store_ets_index},
  99. {plugins_dir,"/usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/../plugins"},
  100. {plugins_expand_dir,"/var/lib/rabbitmq/mnesia/rabbit@node1-plugins-expand"},
  101. {queue_index_max_journal_entries,65536},
  102. {reverse_dns_lookups,false},
  103. {sasl_error_logger,{file,"/var/log/rabbitmq/rabbit@node1-sasl.log"}},
  104. {server_properties,[]},
  105. {ssl_apps,[asn1,crypto,public_key,ssl]},
  106. {ssl_cert_login_from,distinguished_name},
  107. {ssl_listeners,[]},
  108. {ssl_options,[]},
  109. {tcp_listen_options,[binary,
  110. {packet,raw},
  111. {reuseaddr,true},
  112. {backlog,128},
  113. {nodelay,true},
  114. {linger,{true,0}},
  115. {exit_on_close,false}]},
  116. {tcp_listeners,[5672]},
  117. {trace_vhosts,[]},
  118. {vm_memory_high_watermark,0.4},
  119. {vm_memory_high_watermark_paging_ratio,0.5}]
  120.  
  121. Connections:
  122.  
  123. Channels:
  124.  
  125. Queues on /qiuhom/test:
  126.  
  127. Queues on /:
  128.  
  129. Exchanges on /qiuhom/test:
  130. name type durable auto_delete internal arguments policy
  131. direct true false false []
  132. amq.direct direct true false false []
  133. amq.fanout fanout true false false []
  134. amq.headers headers true false false []
  135. amq.match headers true false false []
  136. amq.rabbitmq.trace topic true false true []
  137. amq.topic topic true false false []
  138.  
  139. Exchanges on /:
  140. name type durable auto_delete internal arguments policy
  141. direct true false false []
  142. amq.direct direct true false false []
  143. amq.fanout fanout true false false []
  144. amq.headers headers true false false []
  145. amq.match headers true false false []
  146. amq.rabbitmq.log topic true false true []
  147. amq.rabbitmq.trace topic true false true []
  148. amq.topic topic true false false []
  149.  
  150. Bindings on /qiuhom/test:
  151.  
  152. Bindings on /:
  153.  
  154. Consumers on /qiuhom/test:
  155.  
  156. Consumers on /:
  157.  
  158. Permissions on /qiuhom/test:
  159.  
  160. Permissions on /:
  161. user configure write read
  162. guest .* .* .*
  163.  
  164. Policies on /qiuhom/test:
  165.  
  166. Policies on /:
  167.  
  168. Parameters on /qiuhom/test:
  169.  
  170. Parameters on /:
  171.  
  172. ...done.
  173. [root@node1 ~]#

  策略相关管理子命令

    list_policies [-p <vhostpath>]:列出指定虚拟主机的策略;默认不指定是列出默认虚拟主机;

    set_policy [-p <vhostpath>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition>:对指定虚拟主机设置策略,没有指定虚拟主机表示默认虚拟主机;

    clear_policy [-p <vhostpath>] <name>:清楚指定虚拟主机的策略,没有指定虚拟主机表示对默认虚拟主机操作;

  集群相关子命令

    join_cluster <clusternode> [--ram]:加入指定节点集群;

    cluster_status:查看集群状态

    change_cluster_node_type disc | ram:更改节点存储类型,disc表示磁盘,ram表示内存;一个集群中必须有一个节点为disc类型;

    forget_cluster_node [--offline]:离开集群;

    update_cluster_nodes clusternode:更新集群节点;

    sync_queue queue:同步指定队列;

    cancel_sync_queue queue:取消指定队列同步

    set_cluster_name name:设置集群名称;

  设置参数相关子命令

    list_parameters [-p <vhostpath>]:查看指定虚拟主机运行时参数配置,默认不指定虚拟主机,表示查看默认虚拟主机的参数配置;

    set_parameter [-p <vhostpath>] <component_name> <name> <value>:设置指定参数的配置;不指定虚拟主机表示操作默认虚拟主机;

    clear_parameter [-p <vhostpath>] <component_name> <key>:删除指定配置项;

  其他子命令

    eval <expr>:执行erlang表达式

    close_connection <connectionpid> <explanation>:关闭指定连接;

    trace_on [-p <vhost>]:开启指定虚拟主机的追踪功能;

    trace_off [-p <vhost>]:关闭指定虚拟主机的追踪功能;

    set_vm_memory_high_watermark <fraction>:设置内存高水位标记;

  以上就是rabbit的简单介绍和安装配置相关参数的说明,以及rabbitctl这个工具的常用子命令的用法;

消息型中间件之RabbitMQ基础使用的更多相关文章

  1. 消息型中间件之RabbitMQ集群

    在上一篇博客中我们简单的介绍了下rabbitmq简介,安装配置相关指令的说明以及rabbitmqctl的相关子命令的说明:回顾请参考https://www.cnblogs.com/qiuhom-187 ...

  2. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  3. C# 消息队列之 RabbitMQ 基础入门

    Ø  简介 C# 实现消息队列的方式有很多种,比如:MSMQ.RabbitMQ.EQueue 等,本文主要介绍使用 RabbitMQ 实现消息队列的基础入门.包括如下内容: 1.   什么是消息队列? ...

  4. ASP.NET Core消息队列RabbitMQ基础入门实战演练

    一.课程介绍 人生苦短,我用.NET Core!消息队列RabbitMQ大家相比都不陌生,本次分享课程阿笨将给大家分享一下在一般项目中99%都会用到的消息队列MQ的一个实战业务运用场景.本次分享课程不 ...

  5. Spring Boot 之 RabbitMQ 消息队列中间件的三种模式

    开门见山(文末附有消息队列的几个基本概念) 1.直接模式( Direct)模式 直白的说就是一对一,生产者对应唯一的消费者(当然同一个消费者可以开启多个服务). 虽然使用了自带的交换器(Exchang ...

  6. 消息队列RabbitMQ基础知识详解

    一: 什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序或者模块对模块的通信方法.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另 ...

  7. ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程

    附上消息队列中间件百度网盘连接: 链接: https://pan.baidu.com/s/1FFZQ5w17e1TlLDSF7yhzmA 密码: hr63

  8. RabbitMQ基础概念详细介绍

    http://blog.csdn.net/column/details/rabbitmq.html 转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多 ...

  9. RabbitMQ基础

    上一博客把RabbitMQ的安装配置介绍了下,今天主要是介绍下RabbitMQ的一些基础名词. 一.什么是RabbitMQ?用它能做什么? 1.简介 AMQP,即Advanced Message Qu ...

随机推荐

  1. springboot 使用 dev tool 导致 CastException

    1.背景 项目使用了 Spring + shiro 实现 权限控制, 使用AOP 对 每个 Controller 进行 log 记录时,需要从 shiro 中 获取 username字段, 问题就这样 ...

  2. 《JavaScript语言入门教程》记录整理:入门和数据类型

    目录 入门篇 js介绍 历史 基本语法 数据类型 概述 null 和 undefined 数值 字符串 对象 函数 数组 本系列基于阮一峰老师的<JavaScrip语言入门教程>或< ...

  3. 架构师写的BUG,非比寻常

    部门新来了个架构师,BAT背景,住在三环,开宝马上班,有车位. 小伙话不多,但一旦说话斩钉截铁,带着无法撼动的自信.原因就是,有他着数亿高并发经验,每一秒钟的请求,都是其他企业运行一年也无法企及的.这 ...

  4. PHP preg_replace_callback() 函数

    preg_replace_callback 函数执行一个正则表达式搜索并且使用一个回调进行替换.高佣联盟 www.cgewang.com 语法 mixed preg_replace_callback ...

  5. PHP xml_error_string() 函数

    定义和用法 xml_error_string() 函数获取 XML 解析器的错误描述.高佣联盟 www.cgewang.com 如果成功,该函数则返回错误描述.如果失败,则返回 FALSE. 语法 x ...

  6. luogu P5410 模板 扩展 KMP Z函数 模板

    LINK:P5410 模板 扩展 KMP Z 函数 画了10min学习了一下. 不算很难 思想就是利用前面的最长匹配来更新后面的东西. 复杂度是线性的 如果不要求线性可能直接上SA更舒服一点? 不管了 ...

  7. Linux的VMWare下Centos7的三种网络配置过程(网络二)

    Linux之VMWare下Centos7的三种网络配置过程 环境:虚拟软件:VMWare 14.0客户机:windows 10虚拟机:centos 7 VMware三种网络连接方式 Bridge(桥接 ...

  8. Linux的VMWare14中配置Centos7桥接网络环境(网络一)

    1.查看当前初始环境如下:在windows端先查看本机ip   ifconfig

  9. 一个Java方法能使用多少个参数?

    我最近给我fork的项目QuickTheories增加了一个接口: @FunctionalInterface public interface QuadFunction<A, B, C, D, ...

  10. 数据分析学习 third week (7.29~8.4)

    概率分布简介 简单地介绍下常用概率分布的理论知识. 基础概念 1.概率 概率直观上是指一个事件发生可能性大小的数量指标 概率的统计定义:在不变的条件下,重复进行$n$次试验,事件$A$发生的频率稳定在 ...