关于MQ的一些基础问题回答
说出MQ的应用场景
- 解耦系统组件:降低模块间直接依赖,通过消息传递通信。
- 异步处理:非实时任务异步执行(如订单通知、日志记录)。
- 流量削峰:应对突发流量,避免系统过载(如秒杀活动)。
- 最终一致性:实现分布式事务的最终一致(如跨系统数据同步)。
- 日志收集:集中处理多服务的日志(如ELK架构)
说出工作队列模型的特点
- 点对点通信:一个队列对应多个消费者,每条消息仅被一个消费者处理。
- 负载均衡:默认轮询分发消息,支持按处理能力分配(公平模式)。
- 消息确认机制:消费者需显式ACK,避免消息丢失
说出发布订阅模型的交换机类型
- Fanout:广播模式,无视路由键。
- Direct:精确匹配路由键。
- Topic:通配符匹配路由键(
*匹配单词,#匹配多级)。- Headers:通过消息头键值对匹配(较少使用
说出fanout交换机的特性
- 广播所有绑定队列:无视消息的路由键,全量发送。
- 适用场景:系统通知、事件广播(如系统配置更新)
说出Direct交换机的特性
- 路由键精确匹配:队列需绑定指定路由键(如
error、info)。- 单规则路由:常用于日志分级处理、特定任务分发
说出Topic交换机的特性
- 通配符路由键:支持
user.*.order(单级)和stock.#(多级)。- 灵活订阅:适用于复杂路由逻辑(如多维度消息分类
说出惰性队列的特性
- 消息直接存盘:减少内存占用,避免内存溢出。
- 高吞吐、高延迟:适合大流量但允许延迟的场景(如日志备份)
说出优先级队列的特性
- 消息优先级设置:声明队列时指定最大优先级(如
x-max-priority: 10)。- 高优先消息优先消费:适用于VIP订单、紧急任务插队处理
说出如何解决MQ消息堆积问题
- 横向扩展:增加消费者实例或分区队列。
- 优化消费逻辑:提升处理速度(如批量处理、异步化)。
- 设置消息TTL:自动清理过期消息。
- 启用惰性队列:降低内存压力,允许堆积。
- 流量控制:限制生产者速率或降级非核心业务。
- 监控与告警:实时监控堆积量,及时介入处理
浙公网安备 33010602011771号