亚马逊 SQS 优先级队列

10

是否可以使用Amazon简单队列服务创建优先级队列?

最初,我在这个问题上找不到任何信息,这就是为什么我创建了两个队列的原因。一个是通用队列,另一个是优先级队列。我按照定义的规则将消息排入此队列,但在出列消息时会出现困惑。

如何对队列进行长时间轮询,使我的队列组合起来表现得像单个优先级队列?

2个回答

6

我认为你很明智地创建了两个队列 - 一个普通队列和一个优先队列。

在这种情况下,您不一定需要长轮询。由于优先队列中的消息优先于普通队列中的消息,因此您可以采用以下方法:

  1. 轮询优先队列直到没有更多消息。
  2. 轮询正常队列,并在每个正常队列中的消息之后重复步骤1。

2
轮询是一个阻塞调用。如果队列中没有消息,我会被阻塞在优先队列并永远不会移动到普通队列。 - Karan Verma
这取决于您使用的轮询队列的API。此处的文档提到您可以指定等待时间。在这里设置短等待时间应该相当于简单地检查是否有消息 - http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html - Nikhil
不要使用长轮询,这样就不会阻塞了。 - Travis Reeder
shoryuken将在所有队列之间轮换,根据权重更多地检查较高优先级的队列。如果您想继续检查高优先级队列,并且只有在它为空后才转到低优先级,则需要对其进行补丁/分叉。 - Andrew Kuklewicz

1
你可以使用Shoryuken并设置更高的权重来配置优先级:
queues:
  - [high_priority_queue, 5]
  - [low_priority_queue, 1]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接