本文最后更新于 2024-08-20,文章内容可能已经过时。

@echo off
setlocal enabledelayedexpansion

:loop
:: 设置 RabbitMQ API URL 和认证信息
set "RABBITMQ_API_URL=http://192.168.110.161:15672/api/queues/%%2f/test_queue"
set "USERNAME=user"
set "PASSWORD=password"

:: 设置企业微信机器人 webhook URL
set "WECHAT_WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=81df5018-c175-4f94-a805-xxxxxxxxxxxx"

:: 设置消息数量阈值和通知用户
set "THRESHOLD=10"
set "MENTIONED_LIST=[\"@all\"]"  :: 提及所有人
set "MENTIONED_MOBILE_LIST=[\"18326923280\"]"  :: 使用 JSON 格式的手机号列表

:: 查询队列信息并保存到文件
curl -s -u %USERNAME%:%PASSWORD% %RABBITMQ_API_URL% > queue_info.json

:: 从 JSON 文件中提取消息数量
for /f "tokens=*" %%a in ('powershell -Command "$json = Get-Content -Path queue_info.json -Raw | ConvertFrom-Json; $json.messages"') do set "messages=%%a"

:: 检查消息数量是否超过阈值
if !messages! gtr %THRESHOLD% (
    :: 构造企业微信机器人消息内容
    set "MESSAGE_CONTENT={\"msgtype\":\"text\",\"text\":{\"content\":\"Queue has exceeded the threshold. Current messages: !messages!.\" ,\"mentioned_mobile_list\":%MENTIONED_MOBILE_LIST%}}"

    :: 发送企业微信机器人通知
    curl -s -H "Content-Type: application/json" -d "!MESSAGE_CONTENT!" %WECHAT_WEBHOOK_URL%

    :: 输出通知已发送的消息(可选)
    echo Notification sent to WeChat workbench.  %date% %time%
) else (
    :: 输出消息数量未超过阈值的消息(可选)
    echo Queue has !messages! messages. Below threshold.  %date% %time%
)
 
:: 清理临时文件(如果需要的话)
del queue_info.json

timeout /t 300
goto loop