通过ServiceStack / Redis MQ将“延迟执行”消息排队的推荐方法是什么?

Jes*_*seP 5 messaging redis servicestack redismqserver

我只想在给定的持续时间(即满足执行的最短日期/时间)之后和/或在处理消息时将消息的执行推迟到以后,以便将消息排队处理及时(例如未满足某些先决条件检查)。

例如,发生了一个事件,该事件定义了一个过程,该过程需要从初始事件开始不超过1小时运行。

是否有内置/建议的模型使用https://github.com/ServiceStack/ServiceStack/wiki/Messaging-and-Redis进行协调?

Kha*_*meh 2

我可能会通过两步方法来构建它。

  1. 将任务放入队列系统中,该系统会将其处理到持久性存储中:SQL Server、MongoDB、RavenDB。

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

这可能是最安全的方法,因为您可能不想失去这些工作。

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

因此,您将消息推送到队列中,并不打算处理它们,并且它们在几分钟内有特定的过期时间。当它们过期时,它们会弹出到您将处理的队列中。将事情排队以供稍后使用的非常巧妙的方式。