Redis队列与MSMQ

Fel*_*Net 15 .net c# publish-subscribe redis servicestack

很长一段时间我们都在使用msmq和redis queue(IRedisList).几个月前,我们开始尝试redis pub-sub.

我们的应用程序有20多种服务,可以从队列中读取消息或使用redis订阅频道.我们还有十多个队列,我们​​向他们发送消息.该应用程序是多线程的.

那么我想要你什么?

现在我们有时间花在决定上面我们想要使用什么类型的队列以及我们想要用不同类型的队列替换什么.

我试图寻找有关MSMQ VS Redis的帖子,但没有找到足够的信息.

有人可以告诉我这个问题吗?

Did*_*zia 32

IMO,你想在这里比较苹果和橘子.

MSMQ是一个企业级MOM(面向消息的中间件,即排队系统),提供持久性,事务支持和丰富的功能.

Redis是一个快速内存数据结构服务器,您可以在其上构建排队系统.使用Redis正确实现MSMQ的基本功能已经是一项艰巨的任务.完全可能无法实现高级功能(如分发事务支持).

我建议尝试列出您期望从排队系统中获得的属性:

  • 你需要坚持吗?
  • 你需要交易支持吗?
  • 您需要分布式事务支持吗?
  • 您需要"一次且仅一次"交付语义吗?最多一次?至少一次?
  • 您是否需要多个重试策略(线性延迟,指数退避等)?
  • 你需要异常/死队吗?
  • 你需要物品保留吗?
  • 您需要队列浏览支持吗?队列管理功能?
  • 您需要项目优先级管理吗?
  • 你需要自动项目到期吗?
  • 你需要延迟物品吗?
  • 你需要项目排序吗?最后的值队列?
  • 你需要发布和订阅吗?多铸?
  • 您是否需要在单个线程中同时从多个队列中出队?
  • 您需要高可用性和/或群集支持吗?
  • 你有高吞吐量吗?你需要最好的表现吗?

根据您的要求,Redis可能适合也可能不适合.但是不要指望用Redis来获得真正的MOM的花俏.

最后一点:您提到了Redis发布/订阅功能.请注意,此机制完全不基于排队系统.无法保证使用Redis pub/sub传递消息.如果订户不听,则该订户的项目将丢失.