redis - 通过 ServiceStack/Redis MQ 对 "delayed execution"消息进行排队的推荐方法是什么?

标签 redis servicestack messaging redismqserver

我想排队等待处理的消息,仅在给定的持续时间过去后(即满足执行的最短日期/时间),和/或在消息的处理时间,将其执行推迟到稍后的时间点(比如不满足某些先决条件检查)。

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

是否有任何内置/建议的模型来使用 https://github.com/ServiceStack/ServiceStack/wiki/Messaging-and-Redis 来协调这个?

最佳答案

我可能会分两步构建它。

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

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

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

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

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

关于redis - 通过 ServiceStack/Redis MQ 对 "delayed execution"消息进行排队的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450837/

相关文章:

redis - 如何为某些数据库禁用正在运行的 Redis 上的快照?

mysql - 能够在 ServiceStack/ORMLite codefirst 中创建聚簇索引

servicestack - 在 ServiceStack 中创建 C# Amazon SQS 客户端

java - 使用 java 和 activemq-all 库进行 STOMP 心跳跟踪

linux - Redis 没有dump.rdb 只有一个temp.rdb?

javascript - 无法从回调中设置类成员变量

c# - 更正将 json 作为原始字符串发送的服务堆栈休息服务的 header

c++ - 如何在 mfc C++ 中创建自定义 wm_copydata

iOS:如何自定义JSQMessagesCollectionview?

python - Celery 'Error: No nodes replied within time constraint' 错误 - 如何调试?