【技术实现步骤摘要】
一种消息中间件的限流方法及消息中间件
[0001]本申请涉及消息限流
,特别涉及一种消息中间件的限流方法及消息中间件。
技术介绍
[0002]消息中间件RocketMQ是一种开源的分布式消息中间件。在消息中间件RocketMQ中会设置有消息存模块Broker,其用于对对应的消息类别管理标识Topic的消息进行处理。
[0003]消息类别管理标识Topic为用于标识一类消息的逻辑名称,是消息的逻辑管理单元。所以在消息队列使用场景中,通常以消息类别管理标识Topic来区分不同的业务,而多个业务可以共用一个Broker集群。这就会导致,当某个业务在往自己的topic生产消息时,由于某些异常原因,致使消息生产请求暴增,继而这些请求将堆积在所对应的Broker端。Broker由于无法及时处理瞬间暴增的请求,将会导致部分请求失败,进而影响其他业务。
[0004]因此当前急需一种有效对消息中间件进行限流的方法,以能解决当前容易出现请暴增,导致业务无法正常提供的问题。
技术实现思路
[0005]基于上述 ...
【技术保护点】
【技术特征摘要】
1.一种消息中间件的限流方法,其特征在于,应用于消息中间件,所述消息中间件的限流方法,包括:当接收到生产者发送的消息发送请求时,拦截所述消息发送请求;解析出所述消息发送请求中的目标参数;其中,所述目标参数至少包括消息类别管理标识;获取所述消息中间件中的所述消息类别管理标识对应的目标限流器;通过目标限流器为所述消息发送请求获取令牌;其中,所述限流器按照配置的限速参数生成令牌;若获取到令牌,则将所述消息发送请求传递至下一个处理器进行处理;若未获取到令牌,则拒绝所述消息发送请求。2.根据权利要求1所述的方法,其特征在于,所述解析出所述消息发送请求中的目标参数之前,还包括:将所述消息发送请求加入内置阻塞队列中;其中,若所述消息发送请求未成功加入所述内置阻塞队列中,则执行所述将所述消息发送请求传递至下一个处理器进行处理;若所述消息发送请求成功加入所述内置阻塞队列中,则对所述消息发送请求的线程合法性以及请求类型合法性进行校验;其中,若所述消息发送请求通过线程合法性以及请求类型合法性校验,则执行所述解析出所述消息发送请求中的目标参数;若所述消息发送请求未通过线程合法性校验或未通过请求类型合法性校验,则执行所述将所述消息发送请求传递至下一个处理器进行处理。3.根据权利要求1所述的方法,其特征在于,所述通过目标限流器为所述消息发送请求获取令牌,包括:计算从虚拟机启动至当前时刻的相对时间,得到当前相对时间;检测所述目标限流器的熔断器是否处于开启状态;若检测出所述目标限流器的熔断器处于开启状态,则获取所述熔断器的熔断时间;判断所述当前相对时间是否已超出所述熔断器的熔断时间;若判断出所述当前相对时间未超出所述熔断器的熔断时间,则反馈无法获取令牌;若判断所述当前相对时间已超出所述熔断器的熔断时间,则将所述目标限流器的熔断器置为关闭状态;当所述目标限流器的熔断器处于关闭状态时,基于记录的下次获取时间、所述当前相对时间以及所述限速参数,计算所述目标限流器从所述下次获取时间至所述当前相对时间产生的令牌数量,并将所述下次获取时间更新为所述当前相对时间;基于计算得到所述令牌数量,为所述消息发送请求获取令牌;若未获取到令牌,则将所述目标限流器的熔断器置为开启状态;若获取到令牌,则反馈获取到的所述令牌。4.根据权利要求1所述的方法,其特征在于,还包括:接收监控运维平台发送的用户通过前端页面发起的限速参数查询请求;将各个待查询的消息类别管理标识对应的所述限速参数反馈给所述监控运维平台,以由所述监控运维平台通过前端页面向所述用户展示各个所述待查询的消息类别管理标识对应的所述限速参数。
5.根据权利要求4所述的方法,其特征在于,还包括:接收监控运维平台发送的所述用户通过前端页面发起的限速参数更新请求;基于所述限速参数更新请求对各个待设置的消息类别管理标识对应的所述限速参数进行更新。6.一种消息中间件,其特征在于,包括:拦截单元,用于当接收到生产者发送的消息发送请求时,拦截所述消息发送请求;解析单元,用于解析出所述消息发送请求中的目标参数;其...
【专利技术属性】
技术研发人员:高永飞,王峰,张益军,王金明,
申请(专利权)人:飞狐信息技术天津有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。