这一节主要讲解下RocketMQ中的一些核心概念。
一、Producer (生产者)
生产者用于业务系统把消息发送到RocketMQ系统中,RocketMQ提供了多种发消息模式,如:同步、异步、单线程。
二、Producer Group(生产者组)
用来表示一个发送消息应用,一个Producer Group下包含多个Producer实例,可以是多台机器,也可以是一台机器的多个进程,或者一个进程的多个Producer对象。一个Producer Group可以发送多个Topic消息,Producer Group作用如下:
- 标识一类Producer
- 可以通过运维工具查询这个发送消息应用下有多个Producer实例
- 发送分布式事务消息时,如果Producer中途意外宕机,Broker会主动回调Producer Group内的任意一台机器来确认事务状态。
三、Consumer(消费者)
消费者从brokers中拉取消息,然后发给应用程序中被处理。
RocketMQ提供了两种类型的消费者:
- PullConsumer
pull类型的消费者,会积极的拉取消息,一旦拉取到了一批消息,用户程序就会开启消费线程 - PushConsumer
push类型的消费者,会基于回调方法,来让用户程序消费消息。
四、Consumer Group(消费者组)
用来表示一个消费消息应用,一个Consumer Group下包含多个Consumer实例,可以是多台机器,也可以是多个进程,或者是一个进程的多个Consumer对象。
在集群模式下,一个Consumer Group下的多个Consumer以均摊方式消费消息;如果设置为广播方式,那么这个Consumer Group下的每个实例都消费全量数据。
五、Topic(主题)
用来对消息进行分组的,生产者会把不同类型的消息投递到不同的组。一般用来区分不同的业务消息
六、Message(消息)
在RocketMQ中传递的数据
七、Message Queue(消息队列)
消息队列,用来存放消息,
八、Tag(标签)
消息标签,进一步区分topic下的消息分类,使用tag可以很灵活的对消息进行处理。
九、Broker
Broker是RocketMQ系统中非常重要的组成部分,可以认为是消息容器,用来接受生成这发来的消息、存放消息、发送消息、保存消费进度等等。
十、Name Server(名称服务)
用来路由信息,生产者和消费者通过NameServer来找到相应的broker
十一、Message Model(消息模型)
有两种:
- Clustering :集群模式
- Broadcasting:广播
十二、Message Order(消息顺序)
使用DefaultMQPushConsumer时,您可以决定按顺序或同时使用消息
- 有顺序地
按顺序使用消息意味着消息的消费顺序与生产者为每个消息队列发送的顺序相同。如果您正在处理全局顺序是必需的方案,请确保您使用的主题只有一个消息队列。
警告:如果指定了有序消费,则消息消耗的最大并发数是消费者组订阅的消息队列数。 - 同时
在并发使用消息时,消息消耗的最大并发性仅受为每个使用者客户端指定的线程池的限制。