消息推送延迟需依次排查mq服务状态、消费者积压、连接参数、日志追踪及传输协议:一、检查5672端口监听并启动mq;二、通过管理界面确认队列ready/unacked值及通道状态;三、调小heartbeat至30、connection_timeout至5000并启用tcp_keepalive;四、开启mq调试日志,分析delivered与acknowledged时间差;五、将protocol改为mqtt、serialization改为msgpack以降低开销。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您已完成WorkBuddy安装,但发现消息推送出现明显延迟,可能是本地消息队列(MQ)连接不稳定、消费积压或配置不当所致。以下是针对性的排查与优化步骤:
一、验证MQ服务状态与连通性
WorkBuddy依赖本地运行的MQ服务(如RabbitMQ或内置轻量级MQ模块)进行事件分发,若服务未启动、端口被占用或网络策略拦截,将导致消息入队后无法及时投递至消费者进程。
1、打开终端(Windows使用PowerShell,macOS/Linux使用Terminal),执行命令:netstat -an | grep :5672(RabbitMQ默认AMQP端口)或lsof -i :5672(macOS/Linux)确认端口监听状态。
2、若无输出,说明MQ服务未运行;前往WorkBuddy安装目录下的mq/子文件夹,双击start-mq.bat(Windows)或./start-mq.sh(macOS/Linux)手动启动。
3、启动后再次执行curl -I http://127.0.0.1:15672,确认返回HTTP 200且页面可访问(RabbitMQ管理界面)。
二、检查消息队列积压与消费者活跃度
消息延迟常源于消费者线程阻塞、崩溃或处理能力不足,导致队列中待消费消息持续堆积,新消息需排队等待。
1、登录RabbitMQ管理控制台(http://127.0.0.1:15672),使用默认账号guest/guest进入。
2、点击左侧Queues,查找以workbuddy.开头的队列(如workbuddy.notification、workbuddy.event)。
3、观察各队列的Ready与Unacked数值:若Ready > 50 或 Unacked长期为0,表明消费者未正常拉取消息;若Unacked > 200 且持续增长,说明消费者处理缓慢或已断连。
4、在Channels页签中,确认是否存在状态为down或idle的通道,该通道对应WorkBuddy的MQ消费者实例。
三、调整MQ连接参数与心跳超时
默认MQ连接心跳间隔过长或TCP Keep-Alive未启用,易在NAT网关或防火墙环境下被静默中断,造成连接假死,新消息无法下发。
1、关闭WorkBuddy客户端,在安装目录下找到config/mq-config.yaml文件。
2、编辑该文件,定位connection:区块,将以下三项值修改为:
heartbeat: 30
使用 draw.io(.drawio 格式)和 SVG 生成兼容 Microsoft Visio 的架构图。当用户需要以下任一场景时触发: - 用于 Visio 或技术文档的架构/系统/网络图 - 带连接标注的分层控制系统图 - 将 draw.io XML 转换为稳定、可嵌入的 SVG - 修复 Visio 或 draw.io 无法打开的故障排查类图表 - 任何需专业级布局且文本可编辑的图表
connection_timeout: 5000
tcp_keepalive: true
3、保存文件,重启WorkBuddy并观察日志中是否出现"MQ connection re-established"或"Heartbeat ACK received"提示。
四、启用MQ本地监控与日志追踪
启用详细MQ操作日志可定位具体卡点,例如消息入队成功但未触发消费逻辑,或消费回调抛出未捕获异常。
1、在WorkBuddy主界面右上角点击头像 → 设置 → 高级选项。
2、开启MQ调试日志与消息轨迹追踪两个开关。
3、重启应用后,前往logs/mq-consumer.log文件,搜索关键词"DELIVERED"与"ACKNOWLEDGED",确认两者时间差是否超过2秒。
4、若存在大量"DELIVERED"但无对应"ACKNOWLEDGED"记录,说明消费逻辑中存在阻塞操作(如同步HTTP调用未设超时)或未正确调用channel.basicAck()。
五、切换MQ传输协议与序列化方式
默认AMQP协议在高并发小消息场景下开销较大;若设备资源受限(如低配笔记本),可临时切换为更轻量的传输层,降低序列化与网络栈负担。
1、在config/mq-config.yaml中,将protocol:字段由amqp改为mqtt。
2、在serialization:区块下,将format:由json改为msgpack(二进制序列化,体积减少约40%)。
3、确保MQ服务已启用MQTT插件(RabbitMQ需运行rabbitmq-plugins enable rabbitmq_mqtt)。
4、保存配置并重启WorkBuddy,观察推送延迟是否从平均8秒降至1.5秒以内。










