rocketmq实现限流

目录

问题背景

技术方向

方案确认

消息队列(√)

分布式锁(×)

方案实现

监控方向

业务方向


问题背景

公司邮件服务token有 分钟内超200封的熔断机制,当前token被熔断后,系统发邮件操作会被忽略,所以邮件服务也没有重试操作

人工发现token被熔断后,需要联系邮件群中值班人,将token恢复

分货业务依赖邮件来查看分货通知以及结果,并且分货层层依赖,如果不能及时收到邮件会影响业务的分货时效等,所以通过三个方面去解决这个问题

技术方向

系统内发邮件收口做限流

方案确认

方向:限流发邮件方法1分钟内最大200次

实现:改造系统发邮件底层方法,1分钟内最多发200个

消息队列(√)

面临问题:多出来的怎么处理?消息队列(需要持久化)

实现:新建一个topic,调用发邮件方法的请求全部扔到MQ中,自己消费,通过设置消费者的拉取间隔以及最大拉取数量限制,分钟内消费消息条数不超过200条

面临问题:多分区多消费者?

实现:默认拉取数量为32,目前MQ服务端设置,限制最大拉取数量为32

(可行)设置1个分区,一个消费者组,目前有2个实例(此时其中一个实例不会消费),设置拉取间隔为10s

(不可行,有自动加实例机制)设置2个分区,一个消费者组,目前有2个实例,设置拉取间隔为10s,最大拉取条数为16;系统在流量激增的情况下会增加实例来分摊流量

最终实现方式

topic设置1个分区,一个消费者组,使用默认负载均衡策略:平均分配

//平均分配负载均衡核心逻辑
int index = cidAll.indexOf(curre
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值