Rocketmq中的基本概念(一)

编程

  • 站在生产者的角度来看

同步发送:需要等待发送结果的返回。

异步发送:不需要等待发送结果的返回,完成发送消息以后可以回调本地的方法来做业务逻辑.

单向发送:不需要等待发送结果的返回。

  • 站在Broker的角度来看

无论那种发送消息的方式,最后都是Broker来存储的,在存储的时候,有两个比较关键的处理.

第一:根据配置文件,可以选择全局性的同步刷盘或者异步刷盘

第二:在配置了全局同步刷盘的前提下,又允许每个消息自己设置是否需要同步刷盘

消费者(Consumer)

负责消费消息,RocketMq提供了两种消费形式:拉取式消费、推动式消费。

  • 拉取式消费

应用主动从Broker服务器拉消息、主动权由应用控制。一旦获取了批量消息,应用就会启动消费过程。

  • 推动式消费

Broker收到数据后会主动推送给消费端,该消费模式一般实时性较高

主题(Topic)

每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息消费的最小单元(意思就是说消费消息的时候必须根据主题来)。

Broker Server

负责存储消息和以及一些查询消息的功能。

Name Server

提供消息的路由服务,客户端查根据topic能够查询到Broker的地址列表

Producer Group

相同Producer的集合,这类Producer发送同一类消息且发送逻辑一致.(例如你的集群中一个支付服务有12台机器,这个12台机器中的每个Producer发送的消息的逻辑都是一样的)

Consumer Group

相同Consumer的集合,这类Consumer通常消费同一类消息且消费逻辑一致。(例如你的集群中一个支付服务有12台机器,这个12台机器中的每个Consumer消费消息的逻辑都是一样的).

支持两种消息模式:集群消费和广播消费

  • 集群消费

相同Consumer Group的每个Consumer实例平均分摊消息

  • 广播消费

相同Consumer Group的每个Consumer实例都接收全量的消息.(这种情况下特别要注意幂等,实际上消费消息的时候都要做接口的幂等,不然可能会出现重复消息的问题)

普通顺序消息

Consumer通过同一个消费队列收到的消息是有顺序的,不同消息队列收到的消息则可能是无顺序的。

严格顺序消息

消费者收到的所有消息均是有顺序的。

Tag

为消息设置的Tag,用于同一主题下区分不同类型的消息。消费者可以根据Tag实现对同一主题的不同消费逻辑,实现更好的扩展性。(例如每个微服务一个topic 不同的场景使用tag 来区分,)

参考资料

http://rocketmq.apache.org/

以上是 Rocketmq中的基本概念(一) 的全部内容, 来源链接: utcz.com/z/513998.html

回到顶部