Redis实现优先级队列


title: Redis实现优先级队列 tags:

  • redis
  • mq
  • list
  • 优先级
  • deadletter categories: redis date: 2017-09-05 13:06:23

背景

基于目前系统中存在部分异步需求,比如导入或者新开客户车辆匹配Vin码等

实现思路

  1. redis中使用列表作为队列 最关键提供了阻塞版本的指令BLPOP
  2. 新建三个队列对应高中低优先级 比如f6car_high f6car_mid f6_car_low 再新建deadletter列表  failLetter列表
  3. 当有任务发出根据优先级放入不同的队列中 比如
  4. 此时消费者收到对应请求
  5. 为避免出现错误 比如处理该请求失败 直接将对应的请求重新投递到对应的failLetter列表中(也可以区分优先级)===》这部分可以手工处理或者二次处理直到不OK(策略可以自己定义)
  6. 定义序列化对象 包含如下属性

    属性名称

    属性类型

    属性描述

    说明

    docTypeString类型,处理对应的类型,比如VIN对应doctype的listener处理,如果失败丢入failLetter,如果没有对应type丢入deadLetter
    mqBeanDisturbable对应对象,比如VinMqBean 封装vin码业务对象(实现指定接口)
    disturbateTimelong时间投递时间
    fromString来源系统 
  7. 定义Listener来监听处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值