请问怎么控制rocketmq的消费速度,按照我指定的速率进行消费?
答:RocketMQ可以使用 Sentinel来进行消息限流,如果消息生产速度很大, Sentinel就会限制大量的消息,推送一小部门消息给消费者消费,消费完再推送,这种很匀速的推送,不会使得消费端出现系统负载,从而保证系统的稳定。
Sentinel专门为这种场景提供了匀速器的特性,可以把突然到来的大量请求以匀速的形式均摊,以固定的间隔时间让请求通过,以稳定的速度逐步处理这些请求,起到“削峰填谷”的效果,从而避免流量突刺造成系统负载过高。
问题1: 用户登录每次都要发登陆事件到MQ,然后消费这条消息,然后判断 检查这个优惠券是否有效,还可以继续进行发券,检查当前用户是否发过券了 这是不是会经常重复操作?有没有好的其他方案?
答:这种其实就是一个业务问题,我们发券肯定也是有一个有限期的,不在这个时间范围内的肯定是不会发这个消息的,自然就没有下面的事了。其次假设在有效期,其实这个动作并没有带来什么性能损耗,检查券之类的,都可以基于redis查询,也就是一个判断的事,重复也没什么。
或者我们也可以做成时间范围内,第一次登陆才会送,也是可以的,主要看业务要求。