Rocketmq Practice - Core Concept

本文是对官方原文的理解翻译,利于自己更好的理解 RocketMQ。

Producer(生产者)

Producer 将业务应用系统生成的消息发送到 Broker。RocketMQ 提供多种发送模式:同步、异步和单向。

Producer Group(生产者组)

相同角色的 Producer 会组织在一起。当原有的 Producer 在交易之后崩溃时,Broker 会协调同一组内不同的 Producer 完成相应事务的提交或回退。

注意:每个 Producer 组只会允许一个实例,以避免不必要的实例初始化。

Consumer(消费者)

Consumer 从 Broker 拉取消息并将其提供给应用程序。从应用的角度来看,有两种类型的 Consumer:

PullConsumer(拉取消费者)

PullConsumer 从 Broker 拉取消息。当消息被拉取后,应用程序启动相应的消费处理程序。

PushConsumer(推送消费者)

PushConsumer 封装了消息拉取、消耗进度及其他维护工作,提供一个回调接口用于在消息最终到达时实现业务逻辑处理。

Consumer Group(消费者组)

类似上面提到的 Producer Group,相同角色的 Consumer 会组织在一起并命名为 Consumer Group。

Consumer Group 是一个很好的概念,在消息消费方面实现负载均衡和容错目标是非常容易的。

注意:Consumer Group 中的Consumer 实例必须有完全相同的主题订阅。

Topic(主题)

Topic 是一个类别,用于 Producer 传递消息和 Consumer 拉取消息。Topic 与 Producer 和 Consumer 之间的关系是松散的。

具体来说,一个 Topic 可以由零个、一个或多个 Producer 向它发送消息;相反地,一个 Producer 能够发送消息到不同的 Topic。

从 Consumer 的角度来看,一个 Topic 可以由零个、一个或多个 Consumer Group 订阅。同样, 一个 Consumer Group 可以订阅一个或多个 Topic,只要这个组内保持订阅的一致。

Message(消息)

Message 是要传递的信息。一个消息必须有一个主题,就像信件的邮件地址一样。

一个消息可能包含可选的标签和额外的键值对。例如,你可能给消息设置一个业务密钥,能够在 Broker 上查找消息,在开发时期进行问题诊断。

Message Queue(消息队列)

Topic 被分为一个或多个子主题,称为“消息队列”。

Tag(标签)

Tag ,为用户提供额外的灵活性。使用 Tag ,来自相同的业务模块具有不同目的的消息,可能具体相同的主题和不同的标签。Tags 能够有助于保持代码的整洁与连贯,并且 Tags 也可以方便 RoketMQ 提供的查询系统。

Broker(中间件)

Broker 是 RocketMQ 系统的主要组件。它接收来自 Producers 的消息、存储他们并准备处理来自 Consumers 的请求。同时它还存储消息相关的元数据,包含 Consumer Groups,消费进度偏移和主题/队列信息。

Name Server(命名服务)

Name Server 提供路由信息。Producer 和 Consumer 客户端查找主题以获取相应的 Broker 列表。

Message Model(消息模型)

  • Clustering(集群)
  • Broadcasting(广播)

Message Order(消息顺序)

当使用 DefaultMQPushConsumer 时,你可以决定是有序的或并发的。

  • 有序的

    有序的消费消息意味着 Consumer 按照 Producer 发送的消息顺序进行消费。如果处理需要强制使用全局顺序的情况,请确保使用的主题只有一个消息队列。

    如果指定有序消费,则消费消息的最大并发数是订阅消息的消费者组数量。

  • 并发的

    当消费消息是并发的,消费消息的最大并发数受限于为每个消费者指定的线程池。

    在这种模式下,不再保证消息的顺序。


官方原文:https://rocketmq.apache.org/docs/core-concept/