d34f3bd80d7e71c2253751ff402c0ae094dbe139
问题: - 多线程同时处理同一设备的 TTS 队列,导致多条语音同时下发 - 设备只能播报最后一条,前面的被覆盖 解决方案: - 使用 Redis watch + multi + exec 事务保证原子性 - 使用 Redis 存储上次播报时间(跨线程/跨实例共享) - 间隔不够时取消 watch,消息留在队列下次再试 - 播报失败时清除时间记录,允许立即重试 效果: - 保证播报顺序:先入队的消息先播报(FIFO) - 保证播报间隔:两条播报之间至少间隔 3 秒 - 并发安全:多线程/多实例环境下不会冲突 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Description
Languages
Java
79.7%
PLpgSQL
13.1%
TSQL
6.9%
Python
0.2%