通过ServiceStack / Redis MQ对“延迟执行”消息进行排队的建议方法是什么?

时间:2013-08-26 18:43:04

标签: redis servicestack messaging redismqserver

我想排队要处理的消息,仅在给定的持续时间过去之后(即,满足执行的最小日期/时间),和/或在消息的处理时间,将其执行推迟到稍后的某个时间点(比如说某些先决条件检查不符合)。

例如,发生一个事件,它定义了一个需要在初始事件发生后不超过1小时运行的进程。

是否有任何内置/建议的模型使用https://github.com/ServiceStack/ServiceStack/wiki/Messaging-and-Redis来协调这个?

2 个答案:

答案 0 :(得分:2)

我可能会采用两步法来构建它。

  1. 将任务排入队列系统,将其处理为持久性存储:SQL Server,MongoDB,RavenDB。

  2. 让服务轮询您的“排队”任务,以便何时将它们重新插入队列。

  3. 可能是最安全的方式,因为你可能不想失去这些工作。

    如果您使用RabbitMQ而不是Redis,您可以使用死信队列来获得相同的行为。死信队列本质上是过期消息的捕获者。

    因此,您将邮件推送到队列中而无意处理它们,并且它们在几分钟内就会有特定的到期时间。当它们到期时,它们会弹出到您将要处理的队列中。非常光滑的方式将事情排队等待。

答案 1 :(得分:0)