#!/bin/bash
###################################################
############# mq持续化目录和容器名称 ##############
###################################################
rabbitmq_name=rabbitmq
work_dir=/data/$rabbitmq_name

###################################################
#############          插件管理        ############
#######   1 安装插件，不等于1 不安装插件    #######
###################################################
plugins_message_exchange=1
rabbitmq_tracing=0
rabbitmq_mqtt=0

###################################################
############## mq登录用户和密码设置 ###############
###################################################
rabbitmq_user=admin
rabbitmq_passwd="admin123456"



if [ ! -d $work_dir ];then
   mkdir -p $work_dir
fi

###################################################
################ 运行rabbitmq 服务 ################
###################################################
docker ps -a | awk '{print $NF}' | grep "^$rabbitmq_name$" &>/dev/null
if [ $? -ne 0 ];then
# 新部署，持续化配置
# rabbitmq:3.9-management
docker run -itd --name $rabbitmq_name \
       -e RABBITMQ_DEFAULT_USER=$rabbitmq_user \
       -e RABBITMQ_DEFAULT_PASS=$rabbitmq_passwd \
       --restart=always \
       rabbitmq:3.11-management
sleep 3
docker cp $rabbitmq_name:/var/lib/rabbitmq/mnesia $work_dir/mqdata
docker cp $rabbitmq_name:/opt/rabbitmq/plugins $work_dir/plugins
docker rm -f $rabbitmq_name
chown -R 999:999 $work_dir
sleep 1
# 启动服务
docker run -itd --name $rabbitmq_name \
       -e RABBITMQ_DEFAULT_USER=$rabbitmq_user \
       -e RABBITMQ_DEFAULT_PASS=$rabbitmq_passwd \
       -v $work_dir/mqdata:/var/lib/rabbitmq/mnesia \
       -v $work_dir/plugins:/opt/rabbitmq/plugins \
       -p 5672:5672 -p 15672:15672 -p 15691:15691 -p 15692:15692 \
       --restart=always \
       rabbitmq:3.11-management
else
echo "服务已存在，开始重启服务..."
docker restart $rabbitmq_name
fi

###################################################
## 安装rabbitmq延迟插件 plugins_message_exchange ##
###################################################
if [ $plugins_message_exchange -eq 1 ];then
   cd $work_dir/plugins
   wget http://file.zhangyh.club/rabbitmq_plugins/rabbitmq_delayed_message_exchange-3.11.1.ez  &>/dev/null
   # wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.9.0/rabbitmq_delayed_message_exchange-3.9.0.ez  &>/dev/null
   if [ $? -eq 0 ];then
      echo "插件下载成功，开始加载插件..."
      docker restart $rabbitmq_name
      sleep 3
      docker exec $rabbitmq_name rabbitmq-plugins enable rabbitmq_delayed_message_exchange &>/dev/null
      if [ $? -eq 0 ];then
         echo "plugins_message_exchange 插件加载成功..."
      else
         echo "plugins_message_exchange 插件加载失败..."
         exit 4
      fi
      docker exec $rabbitmq_name rabbitmq-plugins list | grep rabbitmq_delayed_message_exchange
      docker restart $rabbitmq_name
   else
      echo "plugins_message_exchange 插件下载失败..."
      exit 3
   fi
fi

###################################################
##### 安装rabbitmq消息追踪  rabbitmq_tracing ######
###################################################
if [ $rabbitmq_tracing  -eq 1 ];then
   docker exec $rabbitmq_name rabbitmq-plugins enable rabbitmq_tracing
   if [ $? -eq 0 ];then
      echo "rabbitmq_tracing 插件加载成功..."
   else
      echo "rabbitmq_tracing 插件加载失败..."
      exit 4
   fi
fi

###################################################
##### 安装rabbitmq消息推送  rabbitmq_mqtt ######
### 安装rabbitmq消息推送  rabbitmq_web_mqtt ####
###################################################
if [ $rabbitmq_mqtt  -eq 1 ];then
   # docker exec $rabbitmq_name rabbitmq-plugins enable rabbitmq_management
   docker exec $rabbitmq_name rabbitmq-plugins enable rabbitmq_mqtt
   docker exec $rabbitmq_name rabbitmq-plugins enable rabbitmq_web_mqtt
   if [ $? -eq 0 ];then
      echo "rabbitmq_mqtt 插件加载成功..."
   else
      echo "rabbitmq_mqtt 插件加载失败..."
      exit 4
   fi
fi