RabbitMQ配置手册

snow chuai汇总、整理、撰写---2020/1/31


1. 安装RabbitMQ及基础操作
1) 安装并启动RabbitMQ
[root@node1 ~]# yum --enablerepo=epel install rabbitmq-server -y
[root@node1 ~]# systemctl enable --now rabbitmq-server
2) 防火墙规则设置 [root@node1 ~]# firewall-cmd --add-port=5672/tcp --permanent success [root@node1 ~]# firewall-cmd --reload success
2. 账户管理基础操作
1) 添加账户及设定密码
[root@node1 ~]# rabbitmqctl add_user snowchuai password     # 账户为snowchuai,密码为paaword
Creating user "snowchuai"
2) 列示RabbitMQ账户 [root@node1 ~]# rabbitmqctl list_users Listing users guest [administrator] snowchuai
3) 更改账户密码 [root@node1 ~]# rabbitmqctl change_password snowchuai 123456 # 将账户snowchuai的密码更改为123456 Changing password for user "snowchuai"
4) 赋权账户为admin [root@node1 ~]# rabbitmqctl set_user_tags snowchuai administrator Setting tags for user "snowchuai" to [administrator]
[root@node1 ~]# rabbitmqctl list_users Listing users guest [administrator] snowchuai [administrator]
5) 为RabbitMQ添加Vhost [root@node1 ~]# rabbitmqctl add_vhost /snow_vhost Creating vhost "/snow_vhost"
6) 显示RabbitMQ中的Vhost [root@node1 ~]# rabbitmqctl list_vhosts Listing vhosts /snow_vhost /
7) 删除RabbitMQ中的Vhost [root@node1 ~]# rabbitmqctl delete_vhost /snow_vhost Deleting vhost "/snow_vhost"
8) 授权账户使用vhost [root@node1 ~]# rabbitmqctl set_permissions -p /snow_vhost snowchuai ".*" ".*" ".*" # 第一个".*"(read权限),第二个为(write权限),第三个为(Configure权限)] Setting permissions for user "snowchuai" in vhost "/snow_vhost"
9) 查看设定的权限 [root@node1 ~]# rabbitmqctl list_permissions -p /snow_vhost Listing permissions in vhost "/snow_vhost" snowchuai .* .* .*
10) 查看指定用户的权限 [root@node1 ~]# rabbitmqctl list_user_permissions snowchuai Listing permissions for user "snowchuai" /snow_vhost .* .* .*
11) 删除指定用户使用vhost的权限 [root@node1 ~]# rabbitmqctl clear_permissions -p /snow_vhost snowchuai Clearing permissions for user "snowchuai" in vhost "/snow_vhost"
[root@node1 ~]# rabbitmqctl list_permissions -p /snow_vhost Listing permissions in vhost "/snow_vhost"
[root@node1 ~]# rabbitmqctl list_user_permissions snowchuai Listing permissions for user "snowchuai"
3. 支持python
1) 安装AMQP相关的程序
[root@node1 ~]# yum --enablerepo=epel install python2-pika -y
2) 编写一个消息发送程序做为测试 [root@node1 ~]# rabbitmqctl add_vhost /snow_vhost [root@node1 ~]# rabbitmqctl set_permissions -p /snow_vhost snowchuai ".*" ".*" ".*" Setting permissions for user "snowchuai" in vhost "/snow_vhost"
[root@node1 ~]# vim send-msg.py #!/usr/bin/env python
import pika
credentials = pika.PlainCredentials('snowchuai', '123456') connection = pika.BlockingConnection(pika.ConnectionParameters( 'localhost', 5672, '/snow_vhost', credentials))
channel = connection.channel() channel.queue_declare(queue='Hello_World')
channel.basic_publish(exchange='', routing_key='Hello_World', body='Hello RabbitMQ World!')
print(" [x] Sent 'Hello_World'")
connection.close()

[root@node1 ~]# python send-msg.py [x] Sent 'Hello_World'
3) 编写一个消息接收程序做为测试 [root@node1 ~]# vim receive-msg.py #!/usr/bin/env python
import signal import pika
signal.signal(signal.SIGPIPE, signal.SIG_DFL) signal.signal(signal.SIGINT, signal.SIG_DFL)
credentials = pika.PlainCredentials('snowchuai', '123456') connection = pika.BlockingConnection(pika.ConnectionParameters( 'node1.1000cc.net', 5672, '/snow_vhost', credentials))
channel = connection.channel() channel.queue_declare(queue='Hello_World')
def callback(ch, method, properties, body): print(" [x] Received %r" % body)
channel.basic_consume(callback, queue='Hello_World', no_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C') channel.start_consuming()

[root@node1 ~]# python ./receive-msg.py [*] Waiting for messages. To exit press CTRL+C [x] Received 'Hello RabbitMQ World!' [x] Received 'Hello RabbitMQ World!'
4. 支持PHP
1) 安装所需的软件包
[root@node1 ~]# yum --enablerepo=epel install composer php-bcmath unzip -y
2) 安装AMQP客户端一些支持文件 [root@node1 ~]# su - snow # 更改composer源为国内源,避免无法下载 [snow@node1 ~]$ composer config -g repo.packagist composer https://packagist.phpcomposer.com
[snow@node1 ~]$ composer require php-amqplib/php-amqplib Using version ^2.9 for php-amqplib/php-amqplib ./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Installing php-amqplib/php-amqplib (v2.9.2): Downloading (100%) Writing lock file Generating autoload files
[snow@node1 ~]$ composer install Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Nothing to install or update Generating autoload files
3) send测试 [snow@node1 ~]$ vim send-msg.php <?php require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage;
$connection = new AMQPStreamConnection('127.0.0.1', 5672, 'snowchuai', '123456', '/snow_vhost');
$channel = $connection->channel(); $channel->queue_declare('Hello_World', false, false, false, false);
$msg = new AMQPMessage('Hello RabbitMQ World!'); $channel->basic_publish($msg, '', 'Hello_World'); echo " [x] Sent 'Hello_World'\n";
$channel->close(); $connection->close(); ?>

[snow@node1 ~]$ php send-msg.php [x] Sent 'Hello_World'
4) receive测试 [snow@node1 ~]$ vim receive-msg.php <?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection;
$connection = new AMQPStreamConnection('127.0.0.1', 5672, 'snowchuai', '123456', '/snow_vhost'); $channel = $connection->channel();
$channel->queue_declare('Hello_World', false, false, false, false);
echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";
$callback = function($msg) { echo " [x] Received ", $msg->body, "\n"; };
$channel->basic_consume('Hello_World', '', false, true, false, false, $callback);
while(count($channel->callbacks)) { $channel->wait(); } ?>

[snow@node1 ~]$ php receive-msg.php [*] Waiting for messages. To exit press CTRL+C [x] Received Hello RabbitMQ World! [x] Received Hello RabbitMQ World!
5. 支持Ruby
5.1 支持Ruby
1) 安装支持Ruby所需的文件
[root@node1 ~]# yum install rubygems -y
[root@node1 ~]# gem install bunny
Fetching bunny-2.14.3.gem
Fetching amq-protocol-2.3.0.gem
Successfully installed amq-protocol-2.3.0
Successfully installed bunny-2.14.3
Parsing documentation for amq-protocol-2.3.0
Installing ri documentation for amq-protocol-2.3.0
Parsing documentation for bunny-2.14.3
Installing ri documentation for bunny-2.14.3
Done installing documentation for amq-protocol, bunny after 3 seconds
# 如出现以下错误,请升级gem ERROR: Error installing bunny: amq-protocol requires Ruby version >= 2.2.
# 升级办法 (1) 安装rvm [root@node1 ~]# curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - gpg: keyring `/root/.gnupg/secring.gpg' created gpg: /root/.gnupg/trustdb.gpg: trustdb created gpg: key D39DC0E3: public key "Michal Papis (RVM signing) <mpapis@gmail.com>" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) gpg: no ultimately trusted keys found
[root@node1 ~]# curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - gpg: key 39499BDB: public key "Piotr Kuczynski <piotr.kuczynski@gmail.com>" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)
[root@node1 ~]# curl -L get.rvm.io | bash -s stable % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 194 100 194 0 0 358 0 --:--:-- --:--:-- --:--:-- 357 100 24535 100 24535 0 0 14167 0 0:00:01 0:00:01 --:--:-- 347k Downloading https://github.com/rvm/rvm/archive/1.29.9.tar.gz Downloading https://github.com/rvm/rvm/releases/download/1.29.9/1.29.9.tar.gz.asc gpg: Signature made Wed 10 Jul 2019 04:31:02 PM CST using RSA key ID 39499BDB gpg: Good signature from "Piotr Kuczynski <piotr.kuczynski@gmail.com>" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 7D2B AF1C F37B 13E2 069D 6956 105B D0E7 3949 9BDB GPG verified '/root/.rvm/archives/rvm-1.29.9.tgz' Installing RVM to /root/.rvm/ Adding rvm PATH line to /root/.profile /rootw/.mkshrc /root/.bashrc /root/.zshrc. Adding rvm loading line to /root/.profile /root/.bash_profile /root/.zlogin. Installation of RVM in /root/.rvm/ is almost complete:
* To start using RVM you need to run `source /root/.rvm/scripts/rvm` in all your open shell windows, in rare cases you need to reopen all shell windows. Thanks for installing RVM 🙏 Please consider donating to our open collective to help us maintain RVM.
👉 Donate: https://opencollective.com/rvm/donate
[root@node1 ~]# source /root/.rvm/scripts/rvm # 更改为taobao源 [root@node1 ~]# sed -i -e 's/ftp\.ruby-lang\.org\/pub\/ruby/ruby\.taobao\.org\/mirrors\/ruby/g' ~/.rvm/config/db
# 列出现有的Ruby版本 [root@node1 ~]# rvm list known
# 更新Ruby至2.6.0 [root@node1 ~]# rvm install 2.6.0 ...... ...... ruby-2.6.0 - #importing gemsetfile /root/.rvm/gemsets/default.gems evaluated to empty gem list ruby-2.6.0 - #generating default wrappers....... ruby-2.6.0 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake). Install of ruby-2.6.0 - #complete ......
[root@node1 ~]# gem --version 3.0.6 [root@node1 ~]# ruby -v ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux] [root@node1 ~]#
5.2 测试
1) send测试
[root@node1 ~]# vim send-msg.rb
#!/usr/bin/env ruby
require "bunny"
connection = Bunny.new( :hostname => "127.0.0.1", :port => 5672, :vhost => "/snow_vhost", :user => "snowchuai", :pass => "123456", ) connection.start
channel = connection.create_channel
q = channel.queue("Hello_World") channel.default_exchange.publish("Hello RabbitMQ World!", :routing_key => q.name) puts " [x] Sent 'Hello RabbitMQ World!'"
connection.close

[root@node1 ~]# ruby send-msg.rb [x] Sent 'Hello RabbitMQ World!'
2) receive测试 [root@node1 ~]# vim receive-msg.rb #!/usr/bin/env ruby
require "bunny"
Signal.trap(:INT){ puts "Exited from receiving queues." exit(0) }
connection = Bunny.new( :hostname => "127.0.0.1", :port => 5672, :vhost => "/snow_vhost", :user => "snowchuai", :pass => "123456", ) connection.start
channel = connection.create_channel q = channel.queue("Hello_World")
puts " [*] Waiting for messages in #{q.name}. To exit press CTRL+C" q.subscribe(:block => true) do |delivery_info, properties, body| puts " [x] Received #{body}"
delivery_info.consumer.cancel end

[root@node1 ~]# ruby receive-msg.rb [*] Waiting for messages in Hello_World. To exit press CTRL+C [x] Received Hello RabbitMQ World! ^CExited from receiving queues.
6. 使用WEB UI
1) 开启WEB管理插件
[root@node1 ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  amqp_client
  cowlib
  cowboy
  rabbitmq_web_dispatch
  rabbitmq_management_agent
  rabbitmq_management
Applying plugin configuration to rabbit@node1... started 6 plugins.
[root@node1 ~]# systemctl restart rabbitmq-server
2) 设定防火墙规则 [root@node1 ~]# firewall-cmd --add-port=15672/tcp --permanent success [root@node1 ~]# firewall-cmd --reload success
3) 打开浏览器==>http://[RabbitMQ Server的FQDN或IP地址]:15672
7. 使用RabbitMQAdmin
1) 下载 rabbitmqadmin
[root@node1 ~]# wget -P /usr/local/bin/ http://node1.1000cc.net:15672/cli/rabbitmqadmin
--2020-01-31 17:28:42--  http://node1.1000cc.net:15672/cli/rabbitmqadmin
Resolving node1.1000cc.net (node1.1000cc.net)... 192.168.10.11
Connecting to node1.1000cc.net (node1.1000cc.net)|192.168.10.11|:15672... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37870 (37K) [application/octet-stream]
Saving to: ‘/usr/local/bin/rabbitmqadmin’
100%[===========================================================] 37,870 --.-K/s in 0s [root@node1 ~]# chmod 755 /usr/local/bin/rabbitmqadmin [root@node1 ~]# ll /usr/local/bin/rabbitmqadmin -rwxr-xr-x 1 root root 37870 Jan 31 16:56 /usr/local/bin/rabbitmqadmin
2) 使用rabbitmqadmin工具 (1) rabbitmqadmin help [root@node1 ~]# rabbitmqadmin help subcommands
(2) 查看rabbitmqadmin用户 [root@node1 ~]# rabbitmqadmin list users +-----------+--------------------------+------------------------------------------+---------------+ | name | hashing_algorithm | password_hash | tags | +-----------+--------------------------+------------------------------------------+---------------+ ...... ......
(3) 查看rabbitmqadmin vhost [root@node1 ~]# rabbitmqadmin list vhosts +-------------+----------+ | name | Tracing | +-------------+----------+ | / | False | | /snow_vhost | False | +-------------+----------+
(4) 添加账户 [root@node1 ~]# rabbitmqadmin declare user name=gzliu password=password tags=administrator user declared
(5) 添加vhost [root@node1 ~]# rabbitmqadmin declare vhost name=/gz_vhost vhost declared
(6) 关联vhost及权限 [root@node1 ~]# rabbitmqadmin declare permission vhost=/gz_vhost user=gzliu configure=".*" write=".*" read=".*" permission declared
(7) 添加队列 [root@node1 ~]# rabbitmqadmin -V /gz_vhost -u gzliu -p password declare queue name=gz-queue1 queue declared
(8) send测试 [root@node1 ~]# rabbitmqadmin -V /gz_vhost -u gzliu -p password publish routing_key=gz-queue1 payload='Hello RabbitMQ World!' exchange=amq.default Message published
(8) receive测试 [root@node1 ~]# rabbitmqadmin -V /gz_vhost -u gzliu -p password get queue=gz-queue1 requeue=false +-------------+----------+---------------+-----------------------+---------------+------------------+------------+-------------+ | routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered | +-------------+----------+---------------+-----------------------+---------------+------------------+------------+-------------+ | gz-queue1 | | 0 | Hello RabbitMQ World! | 21 | string | | False | +-------------+----------+---------------+-----------------------+---------------+------------------+------------+-------------+
8. RabbitMQ Cluster
1) RabbitMQ Master服务器配置要求
(1) 安装完成RabbitMQ程序并启动
(2) 授权并关联"/" vhost
[root@node1 ~]# rabbitmqctl add_user snowchuai password
[root@node1 ~]# rabbitmqctl set_user_tags snowchuai administrator
[root@node1 ~]# rabbitmqctl set_permissions -p / snowchuai ".*" ".*" ".*"
[root@node1 ~]# rabbitmqctl list_user_permissions snowchuai
Listing permissions for user "snowchuai"
/       .*      .*      .*
(3) 开启WEB UI (4) 安装好rabbitmqadmin工具
2) 在所有RabbitMQ节点上安装RabbitMQ服务 [root@node1 ~]# pssh -h host-list.txt -i 'yum --enablerepo=epel install rabbitmq-server -y' [root@node1 ~]# pssh -h host-list.txt -i 'systemctl enable --now rabbitmq-server' [1] 17:55:21 [SUCCESS] root@node3.1000cc.net [2] 17:55:21 [SUCCESS] root@node2.1000cc.net
[root@node1 ~]# pssh -h host-list.txt -i 'firewall-cmd --add-port={4369/tcp,5672/tcp,15672,tcp,25672/tcp} --permanent' [1] 17:55:21 [SUCCESS] root@node3.1000cc.net [2] 17:55:21 [SUCCESS] root@node2.1000cc.net
[root@node1 ~]# pssh -h host-list.txt -i 'firewall-cmd --reload' [1] 17:55:21 [SUCCESS] root@node3.1000cc.net [2] 17:55:21 [SUCCESS] root@node2.1000cc.net
[root@node1 ~]# pssh -h host-list.txt -i 'rabbitmq-plugins enable rabbitmq_management' [1] 18:30:03 [SUCCESS] root@node2.1000cc.net The following plugins have been enabled: amqp_client cowlib cowboy rabbitmq_web_dispatch rabbitmq_management_agent rabbitmq_management
[2] 18:30:03 [SUCCESS] root@node3.1000cc.net The following plugins have been enabled: amqp_client cowlib cowboy rabbitmq_web_dispatch rabbitmq_management_agent rabbitmq_management
Applying plugin configuration to rabbit@node3... started 6 plugins Applying plugin configuration to rabbit@node2... started 6 plugins.
[root@node1 ~]# pssh -h host-list.txt -i 'systemctl restart rabbitmq-server'
3)配置Rabbit Cluster (1) 同步cookie至其他节点 [root@node1 ~]# pscp.pssh -h host-list.txt /var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/ [1] 18:01:47 [SUCCESS] root@node2.1000cc.net [2] 18:01:47 [SUCCESS] root@node3.1000cc.net
# 此处如果第一次重启失败,可以多试几次 [root@node1 ~]# pssh -h host-list.txt -i 'systemctl restart rabbitmq-server' [1] 18:05:36 [SUCCESS] root@node2.1000cc.net [2] 18:05:36 [SUCCESS] root@node3.1000cc.net
(2) 停止 application [root@node1 ~]# pssh -h host-list.txt -i 'rabbitmqctl stop_app' [1] 18:08:27 [SUCCESS] root@node3.1000cc.net [1] 18:08:27 [SUCCESS] root@node2.1000cc.net
root@node1 ~]# pssh -h host-list.txt -i 'rabbitmqctl reset' [1] 18:09:39 [SUCCESS] root@node2.1000cc.net [2] 18:09:39 [SUCCESS] root@node3.1000cc.net
(3) 将节点加入Cluster [root@node1 ~]# pssh -h host-list.txt -i 'rabbitmqctl join_cluster rabbit@node1' [1] 18:11:21 [SUCCESS] root@node2.1000cc.net [2] 18:11:21 [SUCCESS] root@node3.1000cc.net
(4) 启动 application [root@node1 ~]# pssh -h host-list.txt -i 'rabbitmqctl start_app' [1] 18:12:27 [SUCCESS] root@node2.1000cc.net [2] 18:12:27 [SUCCESS] root@node3.1000cc.net
(5) 验证Cluster状态 [root@node1 ~]# pssh -h host-list.txt -i 'rabbitmqctl cluster_status' [1] 18:13:26 [SUCCESS] root@node2.1000cc.net Cluster status of node rabbit@node2 [{nodes,[{disc,[rabbit@node1,rabbit@node2,rabbit@node3]}]}, {running_nodes,[rabbit@node3,rabbit@node1,rabbit@node2]}, {cluster_name,<<"rabbit@node1.1000cc.net">>}, {partitions,[]}, {alarms,[{rabbit@node3,[]},{rabbit@node1,[]},{rabbit@node2,[]}]}] [2] 18:13:26 [SUCCESS] root@node3.1000cc.net Cluster status of node rabbit@node3 [{nodes,[{disc,[rabbit@node1,rabbit@node2,rabbit@node3]}]}, {running_nodes,[rabbit@node1,rabbit@node2,rabbit@node3]}, {cluster_name,<<"rabbit@node1.1000cc.net">>}, {partitions,[]}, {alarms,[{rabbit@node1,[]},{rabbit@node2,[]},{rabbit@node3,[]}]}]
(6) 同步队列 [root@node1 ~]# rabbitmqadmin declare queue name=cluster-queue queue declared
(7) 设定同步队列规则 # 规则设置语法: rabbitmqctl set_policy [policy name] [Queue_Name] [Mode] [root@node1 ~]# rabbitmqctl set_policy ha-policy "cluster-queue" '{"ha-mode":"all"}' Setting policy "ha-policy" for pattern "cluster-queue" to "{\"ha-mode\":\"all\"}" with priority "0"
(8) 验证 [root@node1 ~]# rabbitmqadmin list queues name node policy slave_nodes state synchronised_slave_nodes +---------------+--------------+-----------+----------------------------------+---------+----------------------------------+ | name | node | policy | slave_nodes | state | synchronised_slave_nodes | +---------------+--------------+-----------+----------------------------------+---------+----------------------------------+ | cluster-queue | rabbit@node1 | ha-policy | ["rabbit@node2", "rabbit@node3"] | running | ["rabbit@node2", "rabbit@node3"] | +---------------+--------------+-----------+----------------------------------+---------+----------------------------------+
(9) 访问node1.1000cc.net的WEB UI确认
9. 更改节点类型
1) 将节点改为RAM类型
[root@srv2 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@srv2 ...
[root@srv2 ~]# rabbitmqctl change_cluster_node_type ram Turning rabbit@srv2 into a ram node
[root@srv2 ~]# rabbitmqctl start_app Starting node rabbit@srv2 ...
[root@srv3 ~]# rabbitmqctl stop_app Stopping rabbit application on node rabbit@srv3 ...
[root@srv3 ~]# rabbitmqctl change_cluster_node_type ram Turning rabbit@srv3 into a ram node
[root@srv3 ~]# rabbitmqctl start_app Starting node rabbit@srv3 ...

2) 将节点改为Disc类型 [root@srv2 ~]# rabbitmqctl stop_app Stopping rabbit application on node rabbit@srv2 ...
[root@srv2 ~]# rabbitmqctl change_cluster_node_type disc Turning rabbit@srv2 into a disc node
[root@srv2 ~]# rabbitmqctl start_app Starting node rabbit@srv2 ...
[root@srv3 ~]# rabbitmqctl stop_app Stopping rabbit application on node rabbit@srv3 ...
[root@srv3 ~]# rabbitmqctl change_cluster_node_type disc Turning rabbit@srv3 into a disc node
[root@srv3 ~]# rabbitmqctl start_app Starting node rabbit@srv3 ...
10. Rabbitmqctl命令及Rabbitmqadmin命令
1) Rabbitmqctl命令
**rabbitmqctl命令**
启动服务:rabbitmq-server -detached # 后台
停止运行:rabbitmqctl stop 
查看状态:rabbitmqctl status
关闭服务:rabbitmqctl stop
列出角色:rabbitmqctl list_users
rabbitmqctl add_user{用户名}{密码}# 添加用户,后面两个参数分别是用户名和密码
rabbitmqctl set_permissions -p / {用户名} ".*" ".*" ".*" # 添加权限
rabbitmqctl set_user_tags {用户名} administrator  # 修改用户角色
# 删除节点
rabbitmqctl  stop_app
rabbitmqctl forget_cluster_node { rabbit@节点名称}
rabbitmqctl  start_app
增加节点、
scp /root/.erlang.cookie root@{ip}:/root/  # 在已有节点执行。
# 以下在要新增的节点执行。
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram  { rabbit@节点名称}
rabbitmqctl start_app
查看集群状态:
rabbitmqctl cluster_status
2) Rabbitmqadmin命令 rabbitmqadmin --help rabbitmqadmin help subcommands rabbitmqadmin help config rabbitmqadmin list users 查看所有用户 User rabbitmqadmin list users name 查看所有用户名 Username rabbitmqadmin list users tags 查看所有用户角色 rabbitmqadmin list vhosts 查看所有虚拟主机 rabbitmqadmin list connections 查看所有连接 rabbitmqadmin list exchanges 查看所有路由 Exchange rabbitmqadmin list bindings 查看所有路由与队列的关系绑定binding rabbitmqadmin list permissions 查看所有角色的权限 Permission rabbitmqadmin list channels 查看所有通道 Channel rabbitmqadmin list consumers 查看所有消费者 Consumer rabbitmqadmin list queues 查看所有消息队列 Queue rabbitmqadmin list nodes 查看所有节点 Node rabbitmqadmin show overview 概览 Overview
rabbitmqadmin list bindings source destination_type destination properties_key 查看所有路由与队列的关系绑定的详细信息 Binding
rabbitmqadmin purge queue name=test 清空队列 rabbitmqadmin -f raw_json list users 格式化输出 rabbitmqadmin -f long list users 格式化输出 rabbitmqadmin -f pretty_json list users rabbitmqadmin -f kvp list users rabbitmqadmin -f tsv list users rabbitmqadmin -f table list users rabbitmqadmin -f bash list users rabbitmqadmin declare queue name=test durable=true 定义一个队列queue,durable=true 代表持久化打开。 rabbitmqadmin publish routing_key=test payload="just for test" 发布一条消息 rabbitmqadmin get queue=test requeue=true 消费一条信息 rabbitmqadmin get queue=test requeue=false rabbitmqadmin declare exchange name=my.fanout type=fanout 定义一个Fanout路由 rabbitmqadmin declare exchange name=my.direct type=direct 定义一个Direct路由 rabbitmqadmin declare exchange name=my.topic type=topic 定义一个Topic路由
rabbitmqadmin declare binding source=my.fanout destination=test routing_key=first 定义 binding
rabbitmqadmin delete queue name=hello 删除消息队列 Queue rabbitmqadmin delete user name=test 删除用户 User rabbitmqadmin delete exchange name=test 删除路由器 Exchange
rabbitmqadmin delete binding source='kk' destination_type=queue destination=test properties_key=test 删除路由器与消息队列的关系绑定 Binding
rabbitmqadmin publish routing_key=first exchange=my.fanout payload="just for test1" 使用路由转发消息
3) Rabbitmqadmin帮助 Usage ===== rabbitmqadmin [options] subcommand
where subcommand is one of:
Display =======
list users [<column>...] list vhosts [<column>...] list connections [<column>...] list exchanges [<column>...] list bindings [<column>...] list permissions [<column>...] list channels [<column>...] list parameters [<column>...] list consumers [<column>...] list queues [<column>...] list policies [<column>...] list nodes [<column>...] show overview [<column>...]
Object Manipulation ===================
declare queue name=... [node=... auto_delete=... durable=... arguments=...] declare vhost name=... [tracing=...] declare user name=... password=... tags=... declare exchange name=... type=... [auto_delete=... internal=... durable=... arguments=...] declare policy name=... pattern=... definition=... [priority=... apply-to=...] declare parameter component=... name=... value=... declare permission vhost=... user=... configure=... write=... read=... declare binding source=... destination=... [arguments=... routing_key=... destination_type=...] delete queue name=... delete vhost name=... delete user name=... delete exchange name=... delete policy name=... delete parameter component=... name=... delete permission vhost=... user=... delete binding source=... destination_type=... destination=... properties_key=... close connection name=... purge queue name=...

 

如对您有帮助,请随缘打个赏。^-^

gold