6

我想将要处理的消息排队,仅在经过给定的持续时间后(即,满足执行的最小日期/时间),和/或在消息的处理时间,将其执行推迟到以后及时(比如一些先决条件检查没有得到满足)。

例如,一个事件发生,它定义了一个进程,该进程需要从初始事件的时间开始不早于 1 小时运行。

是否有任何内置/建议的模型可以使用https://github.com/ServiceStack/ServiceStack/wiki/Messaging-and-Redis进行编排?

4

2 回答 2

2

我可能会分两步来构建它。

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

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

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

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

因此,您将消息推送到队列中而不打算处理它们,并且它们在几分钟内具有特定的到期时间。当它们过期时,它们会弹出到您将处理的队列中。很巧妙的方式来为以后排队。

于 2013-08-28T23:32:00.797 回答
0

您可以随时使用https://github.com/dominionenterprises/mongo-queue-csharphttps://github.com/dominionenterprises/mongo-queue-phphttps://github.com/gaillard/mongo-queue- java提供延迟消息和其他不常见的功能。

于 2013-09-27T16:09:04.440 回答