servicestack,Redis,servicestack" /> servicestack,Redis,servicestack" />

带有分区消息队列的ServiceStack RedisMqHost

带有分区消息队列的ServiceStack RedisMqHost,redis,servicestack,Redis,servicestack,我正在实现一个解决方案,其中许多节点侦听使用ServiceStack.Redis实现的许多Redis消息队列。在系统中,每个节点为特定的“通道”和通道上的特定操作提供服务。e、 g.邮件可能是入站电子邮件,渠道可能是“abc” 将有许多通道,但有固定数量的消息类型 我花了一个周末的时间查看了ServiceStack源代码,并在RedisMessageQueueClient和RedisMqHost上实现了几个变体。其思想是在构造时传入“通道”,然后将其用于构造要发布/删除的队列名称 在内部,现有的

我正在实现一个解决方案,其中许多节点侦听使用ServiceStack.Redis实现的许多Redis消息队列。在系统中,每个节点为特定的“通道”和通道上的特定操作提供服务。e、 g.邮件可能是入站电子邮件,渠道可能是“abc”

将有许多通道,但有固定数量的消息类型

我花了一个周末的时间查看了ServiceStack源代码,并在RedisMessageQueueClient和RedisMqHost上实现了几个变体。其思想是在构造时传入“通道”,然后将其用于构造要发布/删除的队列名称

在内部,现有的RedisMqHost和RedisMessageQueueClient使用QueueNames static生成队列名称,但由于这纯粹基于类型名称生成队列,因此我无法仅为特定通道提供服务。我的更新代码将通道名称附加到队列名称的末尾

e、 g.因此,对于“abc”频道,mq:InboundEmail:in将变成mq:InboundEmail:in:abc

代码感觉不对劲,因为我只更改了几个地方,但始终使用QueueNames类

两个问题:

  • 具有多个消息队列的基本设计是否正确?应该将其建模为多个Redis数据库(听起来不太正确),还是我的设计适合拥有大量队列?我想我们会看到大约一千个频道,每个频道有四五个队列

  • 有没有一种现有的机制来划分我错过了的消息队列?这感觉像是一个非常标准的要求,它已经在下面发生了,每个消息类型都有in-queue、Out-queue、Priority和Dlq队列


  • 也许我遗漏了一些东西,但是您不能实现不同的消息类型并相应地注册它们吗?