rocketMq的基本概念和模型

一、rocketMq的基本概念和模型

1、消息模型:

主要由producer、broker、nameserver

和consumer组成。

即消息生产、路由、中转和消费

2、主题(Topic)和标签(tag)

topic表示一类消息的集合, Topic 与 Tag 都是业务上用来归类的标识,区分在于 Topic 是一级分类,而 Tag 可以说是二级分类。

3、消息(Message):

每条消息必须属于一个主题。RocketMQ中每个消息拥有唯一的Message ID,且可以携带具有业务标识的Key。

二、rocketMq的功能特性

 

 

1、全局顺序其实是分区顺序的一个特例,就是只用Topic的一个分区。rocketMq提供了MessageQueueSelectorRocketMQTemplate则对其封装提供了发送带Orderly的方法,将hashKey的值直接固定即可

2、生产者流控, broker通过拒绝send 请求方式实现流量控制,生产者不会尝试消息重投。

      有三种情形:1)、commitLog文件被锁时间超过osPageCacheBusyTimeOutMills时,参数默认为1000ms,返回流控。

                          2)、如果开启transientStorePoolEnable == true,且broker为异步刷盘的主机,且transientStorePool中资源不足,拒绝当前send请求,返回流控。

                          3)、broker每隔10ms检查send请求队列头部请求的等待时间,如果超过waitTimeMillsInSendQueue,默认200ms,拒绝当前send请求,返回流控。

     消费者流控:

                          1)、消费者本地缓存消息数超过pullThresholdForQueue时,默认1000。

                          2)、消费者本地缓存消息大小超过pullThresholdSizeForQueue时,默认100MB。

                          3)、消费者本地缓存消息跨度超过consumeConcurrentlyMaxSpan时,默认2000。

3、重投和重试超过次数

重投:retryTimesWhenSendFailed:同步发送失败重投次数,默认为2,因此生产者会最多尝试发送retryTimesWhenSendFailed + 1次。retryTimesWhenSendAsyncFailed

异步重试次数,同步会在不同broker上重试,异步只会在一个上重试。

重试:失败少于16次在重试队列,RETRY开头+connsumergroupId,超过16次就放入死信队列中

4、过滤:

1. 默认配置下,不支持自定义属性,需要在 broker 的配置文件中 设置开启: enablePropertyFilter = true


版权声明:本文为m0_37840000原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。