场景
- B端批量消息导入与C端业务消息放在一起发送,B端批量导入时数据条数多,C端的消息处理会等处理完成后再消费
- 需要改成C端消息优先级高
步骤
- 定时器任务节点batch最好是一个节点
- 初步批量消费时间估算:8000条消息 / 6个节点 * 0.2s = 300s;8000条消息大概5分钟消耗完成
- 所有的待发送的消息放在本地优先级队列对象queueA,设置对应优先级
- 定时器执行,当queueA中记录 < 100 条时,全部发送(记录太少,不用设置缓冲)
- 如果queueA记录>= 100,获取redis中固定key的值,暂时定1000的阈值,key对应的值value为nil 或者 < 1000 时, 从优先级队列中取出记录条数为1000-value,然后发送
- 这样可以相对的实现大量消息时,新进来的高优先级的相对优先发送了
- 也可以batch节点订阅redis
流程图: