我想排队要处理的消息,仅在给定的持续时间过去之后(即,满足执行的最小日期/时间),和/或在消息的处理时间,将其执行推迟到稍后的某个时间点(比如说某些先决条件检查不符合)。
例如,发生一个事件,它定义了一个需要在初始事件发生后不超过1小时运行的进程。
是否有任何内置/建议的模型使用https://github.com/ServiceStack/ServiceStack/wiki/Messaging-and-Redis来协调这个?
答案 0 :(得分:2)
我可能会采用两步法来构建它。
将任务排入队列系统,将其处理为持久性存储:SQL Server,MongoDB,RavenDB。
让服务轮询您的“排队”任务,以便何时将它们重新插入队列。
可能是最安全的方式,因为你可能不想失去这些工作。
如果您使用RabbitMQ而不是Redis,您可以使用死信队列来获得相同的行为。死信队列本质上是过期消息的捕获者。
因此,您将邮件推送到队列中而无意处理它们,并且它们在几分钟内就会有特定的到期时间。当它们到期时,它们会弹出到您将要处理的队列中。非常光滑的方式将事情排队等待。
答案 1 :(得分:0)