RocketMQ 的基础与规范

时间:2020-12-11 14:54:05

在公司里边,负责消息中间件这块工作,也进行了内部知识的交流。但效果不太明显呀!今天把一些 Rocketmq 的重要的知识点整理出来!

  1. Producer
    消息生产者,负责产生消息,一般由业务系统负责产生消息。

  2. Consumer
    消息消费者,负责消费消息,一般是后台系统负责异步消费。拉取后的消息,是放在线程池里面的。

  3. Pull Consumer
    Consumer 的一种,应用通常竹筒调用 Consumer 的拉取消息方法从 Broker 拉消息。

  4. Push Consumer
    Consumer 的一种,应用那个通常向 Consumer 对象注册一个 Listener 接口,一旦收到消息,Consumer 对象立刻回调 Listener 接口方法。

  5. Produer Group
    一类 Proder 的集合名称,这类 Producer 通常发送一类消息,且发送逻辑一致
  6. Consumer Group
    一类 Consumer 的集合名称,这类 Consumer 通常消费一类消息,且消费逻辑一致。
  7. Broker
    消息中转角色,负责存储消息,转发消息,一般也称为 Server。
########### 消费模式

当前,在 Rocketmq 中,有集群、广播模式之分。

  1. 广播模式
    一条消息被多个 Consumer 消费,即使返些 Consumer 属亍同一个 Consumer Group,消息也会被 Consumer
    Group 中的每个 Consumer 都消费一次,广播消费中的 Consumer Group 概念可以讣为在消息划分方面无意义的。

  2. 集群模式
    一个 Consumer Group 中的 Consumer 实例平均分摊消费消息。例如某个 Topic 有 9 条消息,其中一个
    Consumer Group 有 3 个实例(可能是 3 个迕程,戒者 3 台机器),那举每个实例只消费其中的 3 条消息。
    在 CORBA Notification 规范中,无此消费方式。
    在 JMS 规范中,JMS point-to-point model 不乀类似,但是 RocketMQ 的集群消费功能大等亍 PTP 模型。
    因为 RocketMQ 单个 Consumer Group 内的消费者类似亍 PTP,但是一个 Topic/Queue 可以被多个 ConsumerGroup
    消费。

########## 使用 Rokcetmq 的一些规范

假设 Topic 为 oder 。有 shop 这个应用在消费 Topic 为 order 的数据

1、生产则的命名规范:
p_ 作为开头。比如:p_order,就是 p_{topic}

2、消费者
c_ 作为开头。比如:c_order_shop_{tag}

– 为什么我们需要这种规范呢?因为我们需要做各个监控的动作!而且,如果消费者挂掉了,我们就会立马知道,哪个消费应用挂掉了。