使用Redis做异步队列

使用List作为队列,RPUSH生产消息,LPOP消费消息

缺点一:

  • 没有等待队列里有值就直接消费

第一种弥补方案:

  • 可以通过在应用层引入Sleep机制去调用LPOP重试

第二种弥补方案:

使用命令:

BLPOP key [key...] timeout

阻塞直到队列有消息或者超时

缺点二:

  • 只能供一个消费者消费

弥补:

pup/sub:主题订阅者模式
  • 发送者(pup)发送消息,订阅者(sub)接收消息。
  • 订阅者可以订阅任意数量的频道
订阅频道: subscribe channel [channel...]
发布消息:PUBLIC channel Message
此方法的缺点:
  • 消息的发布是无状态的,不能保证可达
  • 要解决此问题只能使用专业的消息队列如kafaka等