servicestack,messaging,redismqserver,Redis,servicestack,Messaging,Redismqserver" /> servicestack,messaging,redismqserver,Redis,servicestack,Messaging,Redismqserver" />

什么';“推荐的排队方式是什么?”;“延迟执行”;通过ServiceStack/Redis MQ发送消息?

什么';“推荐的排队方式是什么?”;“延迟执行”;通过ServiceStack/Redis MQ发送消息?,redis,servicestack,messaging,redismqserver,Redis,servicestack,Messaging,Redismqserver,我希望仅在经过给定的持续时间(即,满足执行的最短日期/时间)后,将要处理的消息排队,和/或在处理消息时,将其执行推迟到稍后的时间点(例如,未满足某些先决条件检查) 例如,发生了一个事件,该事件定义了一个流程,该流程需要在初始事件发生后1小时内运行 是否有任何内置/建议的模型可用于协调此操作 我可能会用两步的方法来构建它 将任务排队到排队系统中,排队系统将把它处理到一个持久性存储中:SQLServer、MongoDB、RavenDB 让服务轮询您的“排队”任务,以确定它们何时应重新插入队列 也许是

我希望仅在经过给定的持续时间(即,满足执行的最短日期/时间)后,将要处理的消息排队,和/或在处理消息时,将其执行推迟到稍后的时间点(例如,未满足某些先决条件检查)

例如,发生了一个事件,该事件定义了一个流程,该流程需要在初始事件发生后1小时内运行


是否有任何内置/建议的模型可用于协调此操作

我可能会用两步的方法来构建它

  • 将任务排队到排队系统中,排队系统将把它处理到一个持久性存储中:SQLServer、MongoDB、RavenDB

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

  • 也许是最安全的方式,因为你大概不想失去这些工作

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


    因此,您将消息推送到队列中,而无意对其进行处理,并且消息在几分钟内有一个特定的过期时间。当它们过期时,它们会弹出到您将从中处理的队列中。这是一种非常巧妙的方式,可以为以后的事情排队。

    您可以始终使用or,它提供延迟消息和其他不常见的功能。

    我认为也需要两步方法。我已经用我以前的实现构建了这些东西,只是好奇我是否可以把它撕掉或者我是否必须离开它。谢谢你的想法。你能让这个工作吗,我正在看类似的东西?我想每x秒运行一次计划任务来轮询队列。不,不完全是这样。它似乎不受支持,我已经在试验MassTransit,所以我开始使用MassTransit和Quartz集成(由MongoDB job store支持)。到目前为止工作得很好。:)尼尔,你去哪儿了?我不想为了实现这一点而不得不维护另一项完整的技术,因为它似乎与Redis和ServiceStack非常接近。也许@mythz对此有什么看法?