使用Redis做异步队列
使用Redis做异步队列
使用List作为队列,RPUSH生产消息,LPOP消费消息
缺点一:
- 没有等待队列里有值就直接消费
第一种弥补方案:
- 可以通过在应用层引入Sleep机制去调用LPOP重试
第二种弥补方案:
使用命令:
BLPOP key [key...] timeout
阻塞直到队列有消息或者超时
缺点二:
- 只能供一个消费者消费
弥补:
pup/sub:主题订阅者模式
- 发送者(pup)发送消息,订阅者(sub)接收消息。
- 订阅者可以订阅任意数量的频道
订阅频道: subscribe channel [channel...]
发布消息:PUBLIC channel Message
此方法的缺点:
- 消息的发布是无状态的,不能保证可达
- 要解决此问题只能使用专业的消息队列如kafaka等
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Alfred的小站!