消息队列与 RabbitMQ 路由基础
WebSocket、消息队列与实时通信#Python全栈#第十六阶段#WebSocket、消息队列与实时通信#消息队列与 RabbitMQ 路由基础约 925 字 · 3 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
消息队列在实时系统中承担什么职责,与 WebSocket 有什么区别?
追问 生产者、Broker、消费者和在线连接怎样串联?为什么引入队列后仍需要历史存储与客户端状态查询?
异步解耦与削峰怎样产生收益,又会增加哪些成本?
追问 接口响应变快后用户什么时候能看到结果?队列等待、失败补偿和状态管理怎样进入业务设计?
RabbitMQ 的 Connection、Channel、Exchange、Queue 和 Binding 分别是什么?
追问 消息由哪个对象接收、路由和保存?多个消费者能否共享连接,客户端对线程与事件循环的限制怎样核对?
Direct、Fanout 与 Topic Exchange 怎样匹配消息?
追问 给指定处理服务、广播班级事件和按事件类型订阅分别如何设计?Routing Key 与 Binding Key 的关系是什么?
Topic Exchange 中星号与井号的匹配方式有什么区别?
追问 class.12.message.created 适合怎样的绑定?怎样避免过宽规则让无关服务收到全部事件,RabbitMQ 的 Topic Exchange 与 Kafka Topic 是否同一概念?
多个消费者监听同一个队列,与每个服务拥有独立队列有什么区别?
追问 哪些情况应分摊工作,哪些情况要求每个服务都收到事件?如果所有 WebSocket 实例共用一个队列,怎样防止只有某个实例收到广播?
队列和交换机应怎样命名、声明和管理?
追问 多个服务重复声明时,属性不一致会发生什么?环境与租户如何隔离,发布升级时怎样管理拓扑变更?
Durable、Exclusive、Auto-delete 和消息持久化分别描述什么?
追问 临时在线订阅与重要业务队列应怎样选择?队列存续、消息保存和副本可靠性为什么需要分别讨论?
Python 服务怎样管理 RabbitMQ 连接与重连?
追问 为什么不为每条消息建立一次连接?重连后如何恢复 Channel、队列声明和消费,哪些未确认发布状态仍然不确定?
发布消息没有匹配到任何队列时,生产者怎样发现?
追问 Publisher Confirm 与 mandatory 返回分别证明什么?为什么收到发布确认不能独自证明消息到达了预期业务队列?
路由核对资料: RabbitMQ:Exchanges。