使用 rabbitmqadmin 实现 cli命令行下的mq简单运维

2021-03-14 20:33:17 浏览数 (1)

使用 rabbitmqadmin 实现 cli命令行下的mq简单运维

rabbitmqadmin的安装和常用命令如下:

代码语言:javascript复制
https://www.rabbitmq.com/management-cli.html

wget http://{mq_addr}:15672/cli/rabbitmqadmin

chmod  x rabbitmqadmin
mv rabbitmqadmin /usr/bin/rabbitmqadmin

rabbitmqadmin --bash-completion > /etc/bash_completion.d/rabbitmqadmin

## 查看支持的子命令
rabbitmqadmin help subcommands

列出当前的 exchanges
rabbitmqadmin list exchanges

# Get a list of queues, with some columns specified
rabbitmqadmin list queues vhost name node messages message_stats.publish_details.rate

# Get a list of queues, with all the detail we can take
rabbitmqadmin -f long -d 3 list queues

# 列出当前的queue
rabbitmqadmin list queues

# 列出当前的vhosts
rabbitmqadmin list vhosts

# 查看rabbitmq的消息
rabbitmqadmin get queue="qqqq1"  count=20 -f pretty_json   # 或者 -f table 格式输出(建议使用pretty_json)

# 清空某个queue
rabbitmqadmin purge queue name="qqqq1"

下面我们基于rabbitmqadmin jenkins实现一个自助式的小功能

原理: 使用rabbitmqadmin这个python命令行去执行相关的命令获取mq的信息(建议在mq机器上执行)

代码语言:javascript复制
# 查看rabbitmq的消息: rabbitmqadmin get queue="qqqq1"  count=20 -f pretty_json
# 清空某个queue: rabbitmqadmin purge queue name="qqqq1"
代码语言:javascript复制
#!/bin/bash

source /etc/profile

# 这里生成对应的脚本,然后通过ansible下发到mq-01上去执行,并获取返回值

echo ${CHOICE}
echo ${QUEUE_NAME}
echo ${NUMBER}
echo ${confirm}

workspace='/tmp'/

cd ${workspace}

if [ "${confirm}" == 'NO' ]; then
  echo "您刚才选择的是NO, 脚本将不再往下执行。"
  exit 10
fi

if [[ "${CHOICE}" == 'GET_MESSAGE' ]]; then
    echo "rabbitmqadmin get queue="${QUEUE_NAME}"  count=${NUMBER} -f pretty_json" > task.sh
elif [[ "${CHOICE}" == 'PURGE_MESSAGE' ]]; then
    echo "rabbitmqadmin purge queue name="${QUEUE_NAME}"" > task.sh
fi

cat task.sh

# 使用ansible将脚本推送到mq机器去执行(或者本地执行也行,只要rabbitmqadmin命令行里面配置下mq的连接参数即可)
# ansible推送并执行的命令,这里我就不贴了。。。。

最终的效果:

0 人点赞