一、RocketMq核心概念
一、Producer
生产者将业务应用程序系统生成的消息发送给代理。RocketMQ提供多种发送范例:同步,异步和单向。
二、Producer Group
具有相同角色的生产者组合在一起。如果原始生产者在事务之后崩溃,则代理可以联系同一生产者组的不同生产者实例以提交或回滚事务。
警告:考虑到提供的生产者在发送消息方面足够强大,每个生产者组只允许一个实例,以避免不必要的生成器实例初始化。
三、Consumer
消费者从代理那里获取消息并将其提供给应用程序。从用户应用的角度来看,提供了两种类型的消费者:
(1)、PullConsumer
拉动消费者积极地从代理那里获取消息。一旦提取了批量消息,用户应用程序就会启动消费过程。
(2)PushConsumer
另一方面,推送消费者封装消息提取,消费进度并维护其他内部工作,为最终用户留下回调接口以实现将在消息到达时执行。
四、与之前提到的生产者组类似,完全相同角色的消费者被组合在一起并命名为消费者组。消费者群体是一个很好的概念,在消息消费方面实现负载平衡和容错目标非常容易。
警告:使用者组的使用者实例必须具有完全相同的主题订阅。
五、Topic
主题是生产者传递消息和消费者提取消息的类别。主题与生产者和消费者的关系非常松散。具体来说,一个主题可能有零个,一个或多个生成器向它发送消息; 相反,生产者可以发送不同主题的消息。从消费者的角度来看,主题可以由零个,一个或多个消费者群体订阅。类似地,消费者组可以订阅一个或多个主题,只要该组的实例保持其订阅一致即可。
六、Message
消息是要传递的信息。消息必须有一个主题,可以将其解释为您要发送给的邮件地址。消息还可以具有可选标记和额外的键 - 值对。例如,您可以为消息设置业务密钥,并在代理服务器上查找消息以诊断开发期间的问题。
七、Message Queue
主题被划分为一个或多个子主题“消息队列”。
八、Tag
标记,换句话说,子主题,为用户提供了额外的灵活性。对于标记,来自同一业务模块的具有不同目的的消息可以具有相同的主题和不同的标记。标签有助于保持代码的清晰和连贯,而标签也可以方便RocketMQ提供的查询系统。
九、Broker
Broker是RocketMQ系统的主要组成部分。它接收从生产者发送的消息,存储它们并准备处理来自消费者的拉取请求。它还存储与消息相关的元数据,包括消费者组,消耗进度偏移和主题/队列信息。
十、Name Server
Name Server充当路由信息提供者。生产者/消费者客户查找主题以查找相应的Broker列表。
十一、Message Model
(1)、Clustering
(2)、Broadcasting
十二、Message Order
使用DefaultMQPushConsumer时,您可能决定按顺序或同时使用消息。
- 有顺序地
按顺序使用消息意味着消息的使用顺序与生产者为每个消息队列发送的顺序相同。如果您正在处理全局顺序是必需的方案,请确保您使用的主题只有一个消息队列。
警告:如果指定了有序消耗,则消息消耗的最大并发数是消费者组订阅的消息队列数。
- 同时
在并发使用消息时,消息消耗的最大并发性仅受为每个使用者客户端指定的线程池的限制。
警告:此模式不再保证消息顺序。