上次小面带大家来学习了RocketMQ的入门使用,还没有看过的小伙伴建议先看一遍。
今天小面带大家学习RocketMQ常用的核心概念,主要包含一下几个部分:
- RocketMQ消费模型
- TOPIC的作用
- 队列
- 生产者
- 消费者
- 消费者组
一.RocketMQ消费模型
订阅模式:消息由生产者发送后,消费者通过订阅消息就可以消费消息,同一条消息可以由被多个消费者订阅,并消费。
特点:
- 一条消息可以被多个消费者消费
- 不同的消费者相互独立,互不影响
二. TOPIC,队列,消费者组
TOPIC: 生产者发送的每条消息都带上了TOPIC(主题),消费者通过订阅TOPIC来消费自己感兴趣的消息。
队列:TOPIC包含了多个队列,生产者轮训topic对应的队列来发送消息(默认策略),也可以自定义发送策略。mq为了保证单个队列消费消息的有序性,一个队列只能被同一个消费者组的一个消费者消费,多个队列是为了提高消费的并发度,从而提高消费的性能。
消费者组:消费者组包含多个消费者,多个消费者共同消费同一个topic上的消息,因为一个队列只能被同一个消费者组的消费者独占,所以消费者数要小于等于topic的队列数才能提高并发的数量,否则再增加消费者数也没有用。比如TopicA的队列数是4,如果消费者组的消费者实例数为5,就代表有一个消费者实例是没有获取到队列的,不会消费到消息,所以对消费的性能提高没有帮助,这个我们增加消费者实例时候需要特别注意。
消费模式:RocketMQ有两种消费模式,
- 集群消费:同一个消费者组的所有消费者共同消费topic下的消息,不会重复消费。
- 广播消费:同一个消费者组的所有消费者都消费topic下所有的消息,每个消费者独立消费。
三.生产者和消费者
生产者:消息的生成方,可以发送普通消息,批量消息,事务消息;支持同步发送和异步发送。生成消息时,要指定topic和tag,tag用于更细粒度的用于消费过滤。可以指定发送的队列,可以设置keys用于回溯消息,对于排查消息的流向很有帮助。
消费者:消息的消费方,消息支持主动pull模式和被动push模式,pull模式要自己控制消息的拉取和偏移量的提交。push模式只需要定义消息消费的回调方法,拉取和偏移量的控制都由rocket客户端内部封装好了。
四. 小结
今天我们来学习了RocketMQ的核心概念以及他们之间的关系,下节我们来学习一下这些概念是怎么跟消费者和生产者对应起来的,以及在工作中需要注意的地方。