阅读以下关于工单管理系统消息通知架构的叙述,在答题纸上回答问题1-3。
【说明】
某医院拟建设一套院内综合工单管理系统,用于支撑信息科、后勤、设备科等部门对故障报修、服务申请和处理过程进行统一管理。系统需要支持工单基础信息配置、工单提交、处理流转、回复评价、预警规则配置、定时工单扫描、消息通知和多渠道发送。当工单超时、优先级升级或处理状态发生变化时,系统需要通过邮件、站内信和实时消息及时通知相关人员。项目讨论中,李工建议在工单主流程中通过 RPC 同步调用通知服务,张工建议引入 RabbitMQ 消息队列进行异步解耦。系统客户端包括 Web、App 和小程序,普通查询与提交类操作采用 HTTP 请求,预警提醒和工单状态变化等场景需要支持 WebSocket 实时推送。
说明 RabbitMQ 消息队列的特点、工作原理和适用用途。
RabbitMQ 是典型消息队列中间件,生产者将消息发送到交换机,交换机根据路由键和绑定规则把消息投递到队列,消费者从队列中异步消费。其特点包括异步解耦、削峰填谷、可靠投递、路由灵活、支持确认机制和失败重试。适用于邮件、站内信、实时通知、统计汇总、日志处理、预警事件分发等不应阻塞主流程的任务。在工单系统中,工单状态变化后发布事件,通知服务、预警服务和统计服务分别消费消息,可以避免某个通知渠道故障影响工单主流程。
本题要把“消息队列是什么”和“为什么适合通知”连起来。RPC 同步调用适合必须立即得到结果的强依赖服务,但邮件、站内信、预警广播和统计分析往往属于辅助链路。如果同步调用所有通知渠道,邮件服务器慢或短信服务异常可能拖慢工单提交;消息队列则可以让主流程先完成,再由下游异步处理。答题时可以补充 RabbitMQ 的交换机、队列、绑定、生产者、消费者和 ACK,说明它如何实现解耦、削峰和可靠消费。
RabbitMQ 的论述要覆盖生产者、交换机、队列、消费者和 ACK 机制。工单状态变化后,业务服务只需发布事件,不需要同步等待邮件、站内信或实时推送全部成功。这样主流程响应更稳定,下游通知渠道可以独立扩展、失败重试或限流,适合医院工单这种多渠道通知场景。