0

我正处于设计基于队列的系统的初始阶段,并且希望了解将其中一个或另一个用作消息的后备存储的利弊。

大致流程:

ServiceStack 外部 Web 服务将接收 HTTP 消息并将这些 DTO 立即发送到持久消息队列。我可以设想这个特定的队列/主题是 PubSub,因为我有许多其他可能需要通知的进程,一个是出于历史原因存储消息的进程,另一个是对消息本身采取行动并执行一些操作......订阅者/客户列表继续进行。

除了我在 ServiceStack 和基于持久队列的消息传递方面的经验非常有限之外,有什么阻碍我按照这些思路实现某些东西吗?

到目前为止,我的阅读包括这些文章:

Redis 持久化

Redis持久化揭秘

ServiceStack - 消息传递和 Redis

服务栈-SMessageService

ServiceStack - RedisMqServerTest

谢谢你,斯蒂芬

4

1 回答 1

1

Redis MQ中没有任何功能不在Rabbit MQ中,Rabbit MQ 服务器确实存在的一个限制是RetryCountfor failed 消息只能是0or 1(在 Redis MQ 中它可以是任何数字)。

主要的权衡是它需要一个 Rabbit MQ 代理,这是已经运行 Redis 的环境的额外基础设施依赖项。Rabbit MQ 在 Redis MQ 上的一个特性是Ack支持,其中只有在客户端明确确认消息时才会从代理中删除消息:

var responseMsg = mqClient.Get<HelloResponse>(QueueNames<HelloResponse>.In);
mqClient.Ack(responseMsg);
于 2014-10-02T21:08:36.080 回答