我想将要处理的消息排队,仅在经过给定的持续时间后(即,满足执行的最小日期/时间),和/或在消息的处理时间,将其执行推迟到以后及时(比如一些先决条件检查没有得到满足)。
例如,一个事件发生,它定义了一个进程,该进程需要从初始事件的时间开始不早于 1 小时运行。
是否有任何内置/建议的模型可以使用https://github.com/ServiceStack/ServiceStack/wiki/Messaging-and-Redis进行编排?
我想将要处理的消息排队,仅在经过给定的持续时间后(即,满足执行的最小日期/时间),和/或在消息的处理时间,将其执行推迟到以后及时(比如一些先决条件检查没有得到满足)。
例如,一个事件发生,它定义了一个进程,该进程需要从初始事件的时间开始不早于 1 小时运行。
是否有任何内置/建议的模型可以使用https://github.com/ServiceStack/ServiceStack/wiki/Messaging-and-Redis进行编排?
我可能会分两步来构建它。
将任务排队到您的队列系统中,该系统会将其处理到持久存储中:SQL Server、MongoDB、RavenDB。
让服务轮询您的“排队”任务,以确定何时应将它们重新插入队列。
可能是最安全的方式,因为您大概不想失去这些工作。
如果您使用 RabbitMQ 而不是 Redis,则可以使用死信队列来获得相同的行为。死信队列本质上是过期消息的捕获器。
因此,您将消息推送到队列中而不打算处理它们,并且它们在几分钟内具有特定的到期时间。当它们过期时,它们会弹出到您将处理的队列中。很巧妙的方式来为以后排队。
您可以随时使用https://github.com/dominionenterprises/mongo-queue-csharp或https://github.com/dominionenterprises/mongo-queue-php或https://github.com/gaillard/mongo-queue- java提供延迟消息和其他不常见的功能。