使用boto库接收AWS SQS队列中的所有消息,直到队列为空

问题描述 投票:0回答:2

我有一个情况,脚本将所有未使用的卷 ID 写入 AWS SQS 队列,一段时间后,我们需要接收所有带有卷 ID 的消息并删除这些卷。有没有办法使用 python boto 库来实现这一点?

使用 boto 库接收 AWS SQS 队列中的所有消息,直到队列为空

python amazon-web-services boto3 amazon-sqs
2个回答
0
投票

您的 Python 脚本应使用 boto3

receive_message()
命令:

从指定队列中检索一条或多条消息(最多 10 条)。

程序处理完消息后,应调用

delete_message()
delete_message_batch()
来删除消息,并为从
ReceiptHandle
调用获取的每条消息传递
receive_message()

要处理队列中的所有消息,请继续循环内接收和删除消息。


0
投票

这就是我所做的。

while True:
            response = self.client.receive_message(
                QueueUrl=self.queue_url, MaxNumberOfMessages=10, WaitTimeSeconds=20
            )
            if "Messages" not in response:
                break
            for message in response["Messages"]:
                recieved_item = message["Body"]
                # Process your item here
                # delete the message from the queue
                self.client.delete_message(
                    QueueUrl=self.queue_url, ReceiptHandle=message["ReceiptHandle"]
                )

退出 while 循环后,您可以删除队列

© www.soinside.com 2019 - 2024. All rights reserved.