关于MQ的一些基础问题回答

说出MQ的应用场景

  • 解耦系统组件:降低模块间直接依赖,通过消息传递通信。
  • 异步处理:非实时任务异步执行(如订单通知、日志记录)。
  • 流量削峰:应对突发流量,避免系统过载(如秒杀活动)。
  • 最终一致性:实现分布式事务的最终一致(如跨系统数据同步)。
  • 日志收集:集中处理多服务的日志(如ELK架构)

说出工作队列模型的特点

  • 点对点通信:一个队列对应多个消费者,每条消息仅被一个消费者处理。
  • 负载均衡:默认轮询分发消息,支持按处理能力分配(公平模式)。
  • 消息确认机制:消费者需显式ACK,避免消息丢失

说出发布订阅模型的交换机类型

  • Fanout:广播模式,无视路由键。
  • Direct:精确匹配路由键。
  • Topic:通配符匹配路由键(*匹配单词,#匹配多级)。
  • Headers:通过消息头键值对匹配(较少使用

说出fanout交换机的特性

  • 广播所有绑定队列:无视消息的路由键,全量发送。
  • 适用场景:系统通知、事件广播(如系统配置更新)

说出Direct交换机的特性

  • 路由键精确匹配:队列需绑定指定路由键(如 errorinfo)。
  • 单规则路由:常用于日志分级处理、特定任务分发

说出Topic交换机的特性

  • 通配符路由键:支持 user.*.order(单级)和 stock.#(多级)。
  • 灵活订阅:适用于复杂路由逻辑(如多维度消息分类

说出惰性队列的特性

  • 消息直接存盘:减少内存占用,避免内存溢出。
  • 高吞吐、高延迟:适合大流量但允许延迟的场景(如日志备份)

说出优先级队列的特性

  • 消息优先级设置:声明队列时指定最大优先级(如 x-max-priority: 10)。
  • 高优先消息优先消费:适用于VIP订单、紧急任务插队处理

说出如何解决MQ消息堆积问题

  • 横向扩展:增加消费者实例或分区队列。
  • 优化消费逻辑:提升处理速度(如批量处理、异步化)。
  • 设置消息TTL:自动清理过期消息。
  • 启用惰性队列:降低内存压力,允许堆积。
  • 流量控制:限制生产者速率或降级非核心业务。
  • 监控与告警:实时监控堆积量,及时介入处理
posted @ 2025-03-23 20:18  留梦&  阅读(20)  评论(0)    收藏  举报