#11343·bagisto

[2.4] 特性增强:当QUE CONNECTION不同步时,缺失队列工人的管理员警告和电子邮件提醒.

作者: kartikeywebkul9260创建于 2026年6月16日更新于 2026年7月7日
标签Feature RequestInternalRefined

以下是一个更新的 GitHub 功能增强,包括电子邮件通知的想法: # 功能增强:缺少队列工作程序的管理员警告和电子邮件提醒 ## 概要 介绍一个队列健康监控机制,当 `QUEUE_CONNECTION` 使用异步驱动程序(例如 `database`、`Redis`)配置,但没有正在运行的队列工作程序时,向管理员发出警告。 此外,如果在队列工作程序不可用时发送任何与队列相关的作业,则向管理员发送即时的非队列化电子邮件通知,通知他们此问题。 ## 问题陈述 Bagisto 使用队列工作程序来处理后台任务,例如发送电子邮件、索引、导入/导出和其他异步操作。 当 `QUEUE_CONNECTION` 未设置为 `sync` 且队列工作程序未运行时,作业将继续积累在队列中并保持未处理状态。 这可能导致: - 没有发送电子邮件。 - 后台作业仍处于待处理状态。 - 导入/导出过程陷入死循环。 - 延迟或失败的异步操作。 目前,管理员可能没有意识到队列工作程序已停止或从未启动。 ## 建议的解决方案 ### 1. 管理面板队列健康警告 添加一个健康检查,持续验证队列工作程序的可用性。 显示管理员警告,例如: > **队列工作程序未运行** 应用程序配置使用 `{{ QUEUE_CONNECTION }}` 队列驱动程序,但未检测到活动的队列工作程序。 背景作业可能无法处理。 请使用以下命令启动队列工作程序: `php artisan queue:work` 此警告在以下情况下不应显示: * `QUEUE_CONNECTION=sync` * 检测到健康的队列工作程序。 ### 2. 即时管理员电子邮件通知(非队列化) 当应用程序尝试派发队列作业,且未检测到活动的队列工作程序时: * 使用不使用队列系统直接向管理员发送电子邮件。 * 包含以下详细信息: * 队列连接驱动程序。 * 被派发的作业名称或类型。 * 出现的时间。 * 服务器/环境详细信息(可选)。 * 建议的操作,以重新启动队列工作程序。 电子邮件必须同步发送,以避免依赖于失败的队列系统本身。 ### 3. 阻止重复通知 为了避免过多的警告: * 存储最后一次通知的时间戳。 * 在可配置的时间段内(例如每 30 或 60 分钟)仅在队列工作程序恢复健康时一次发送警告电子邮件。 ## 好处 * 管理员可即时了解队列故障。 * 防止关键后台操作出现未被注意到的延迟。 * 减少故障排除时间。 * 提高电子邮件、导入/导出和其他异步功能的可靠性。 * 通过实施限流来避免通知循环。 ## 预期结果 无论系统是否配置为使用异步队列,但没有可用的队列工作程序,管理员都将在管理面板中收到明确的警告,并…

内容来源: bagisto/bagisto