轮询 AWS SQS 队列以查找具有特定属性的消息

Polling an AWS SQS queue for messages with certain attributes

我已经使用 AWS SQS 设置了一个标准队列,我想轮询此 queue 以获取包含 具体 attribute,最好使用 python 中的 boto3 库。我知道 boto3 有一个 方法 recieve_message() 从队列中轮询消息。但是,我只想获取那些包含特定属性的消息。一种天真的方法是遍历 receive_message() 输出并检查 receive_message() 中的 message 是否包含 attribute,但我想知道是否有其他解决方案来解决这个问题。

SQS ReceiveMessage API 不支持选择性轮询。另一种方法是让您的 EC2 将包含不同属性的消息发送到不同的 SQS 队列中。

您不能单独使用 SQS 过滤某些消息,但是,您可以使用 SNS 来过滤。

您可以将消息发布到 SNS 主题。 SNS 的消息过滤器功能使订阅 SNS 主题的端点能够仅接收它感兴趣的主题消息的子集。因此您可以确保只有具有特定属性的相关消息才排入消费者队列。

参考Filter Messages Published to Topics and SNS subscription filtering policies