如何使用SQS实现优先级队列(Amazon简单队列服务)

Ori*_*riK 10 python priority-queue boto amazon-sqs

我有一种情况,当一个msg失败,我想使用python boto包重放那个具有最高优先级的msg,所以他将被带走.如果我没错,SQS队列不支持优先级队列,所以我想实现一些简单的东西.

重要提示:当msg失败时,我不再拥有消息对象,我只保留receipt_handle,这样我就可以删除消息(如果有超过x次重试)/更改超时可见性,以便将他推回队列.

谢谢!

gar*_*aat 9

我不认为有任何方法可以使用单个SQS队列执行此操作.您无法控制邮件的传递,因此无法对邮件施加优先级.如果你找到了办法,我很乐意听到.

我认为你可以使用两个队列(或者更常见的是N队列,其中N是优先级的数量)但是如果你确定它已经失败时实际上没有消息对象,那么即使这样也是不可能的.您需要消息对象,以便可以将数据写入高优先级队列.

我不确定这实际上是否有资格作为答案8 ^)

  • SQS 现在提供 FIFO 功能,但您不能将消息设置为跳到队列前面,严格来说是先进先出。https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html (2认同)