IMO,您正在尝试在这里比较苹果和橙子。
MSMQ 是一种企业级 MOM(面向消息的中间件,即排队系统),提供持久性、事务支持和丰富的功能集。
Redis 是一个快速的内存数据结构服务器,您可以在其上构建队列系统。使用 Redis 正确实现 MSMQ 的基本功能已经是一项艰巨的任务。可能根本不可能实现高级功能(如分发事务支持)。
我建议尝试列出您期望从排队系统中获得的属性:
- 你需要坚持吗?
- 您需要交易支持吗?
- 你需要分布式事务支持吗?
- 您是否需要“一次且仅一次”的交付语义?最多一次?至少一次?
- 您是否需要多个重试策略(线性延迟、指数退避等...)?
- 你需要异常/死队列吗?
- 您需要保留物品吗?
- 您需要队列浏览支持吗?队列管理功能?
- 您需要项目优先级管理吗?
- 您需要自动物品过期吗?
- 您需要延迟项目吗?
- 您需要物品排序吗?最后值队列?
- 你需要发布和订阅吗?多播?
- 您是否需要在单个线程中同时从多个队列中出列?
- 您需要高可用性和/或集群支持吗?
- 你有高通量吗?你需要最好的性能吗?
根据您的要求,Redis 可能适合也可能不适合。但不要指望通过 Redis 获得真正 MOM 的花里胡哨。
最后一点:您提到了 Redis 发布/订阅功能。请注意,这种机制根本不是基于排队系统。无法保证使用 Redis pub/sub 传递消息。如果订阅者不听,则该订阅者的项目将丢失。