303 字
2 分钟
消息队列的两种模型:队列、发布订阅与消费者组
队列模型与发布订阅模型
消息队列常见两种模型:队列模型和发布/订阅模型。
| 模型 | 消费关系 | 典型场景 |
|---|---|---|
| 队列(点对点) | 多个消费者竞争,一条消息只被一个消费者处理 | 订单处理、任务分发 |
| 发布/订阅 | 多个订阅者各自收到同一消息副本 | 广播通知、实时推送、日志分发 |
队列模型中,生产者把消息放入队列,消费者竞争消费;消费完成后消息从队列中移除。发布/订阅模型中,生产者把消息发布到 Topic,订阅者彼此独立地消费消息。
Kafka 的消费者组
Kafka 和 RocketMQ 使用发布订阅模型,但引入消费者组实现组内负载均衡:同一组内的消费者共同消费一个 Topic,组内一条消息只交给一个实例;不同消费者组互相独立,都能获得完整消息。
例如一个有 3 个分区的订单 Topic,可以由订单服务组的 3 个实例各负责一个分区;数据分析服务属于另一个组,仍能收到全量订单消息。
消息队列的两种模型:队列、发布订阅与消费者组
https://blog.xqcherry.top/posts/interview/message-queues/queue-models-and-consumer-groups/ 目录