【发布时间】:2013-01-04 15:16:17
【问题描述】:
延迟队列是一个队列,其中每条消息都有与其相关联的延迟时间,并且只有在延迟到期后才能获取消息。队列的头部是过去延迟过期最远的消息。如果没有延迟过期,则没有头,出队将返回 null。
实际上,我正在使用 Azure 编写云应用程序,在 Azure 中,只有 FIFO 队列可用,优先级/延迟队列不可用。所以我来到这里寻找是否有人可以给我一些指示,从那里我可以朝着正确的方向开始。我用谷歌搜索了很多,但只发现了 Java 中的延迟队列实现,没有标准的教程/研究论文讨论一般的延迟队列。
编辑:
我有什么代码?
实际上,我必须先设计这些东西并提交给我的经理,一旦我们完成设计,然后只有我可以开始编码。
有关该场景的更多详细信息
它是一个基于主/从模型的分布式应用程序。主机产生消息并将它们放入 Azure 服务总线队列,并且有多个从机(在多台机器上运行)从队列中读取并处理它们。如果万一主站宕机,则其中一个从站充当主站并开始生成消息。我不想在主服务器中存储任何状态信息,因为万一主服务器宕机,所有状态信息也会随之而来。
【问题讨论】:
-
请展示一些源代码...你试过什么?什么不工作/你在哪里卡住了?
-
如果您有 Java 实现,将其转换为 C# 应该不会太难。甚至可能比从头开始编写自己的代码更容易。
-
延迟队列的 C# 实现,将类似于 Java 实现。
-
仅供参考,延迟队列只是一个优先级队列,其中优先级是添加到添加时间的延迟,您可以计算并转换为某个单位的 int/long将项目添加到队列时的时间(毫秒/滴答声)。虽然 BCL 中没有 PQ 实现,但您更有可能在网上找到它们的实现。
-
另一点:您需要提供更多详细信息吗?这是一个基于“纯 RAM”的队列吗?是否需要分发(几台“机器”)?持久性是否相关?
标签: c# algorithm azure queue azure-storage-queues