如何实现kafka的消息优先级

场景

  • B端批量消息导入与C端业务消息放在一起发送,B端批量导入时数据条数多,C端的消息处理会等处理完成后再消费
  • 需要改成C端消息优先级高

步骤

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

流程图:


kafka优先级流程图.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容