Amazon SQS 提供了轮询接口来获取队列中的新消息。虽然没有回调函数来通知新消息到达,但可以通过设置轮询计时器并在每次轮询时检查新消息数量来模拟回调函数的行为。
以下是一个使用 AWS SDK for Python(Boto3)实现的示例代码:
import boto3
sqs = boto3.client('sqs', region_name='us-east-1')
queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue'
while True:
response = sqs.receive_message(
QueueUrl=queue_url,
AttributeNames=[
'All'
],
MaxNumberOfMessages=1,
WaitTimeSeconds=20
)
if 'Messages' in response:
for message in response['Messages']:
# 处理收到的新消息,并删除已处理的消息
print(message['Body'])
sqs.delete_message(
QueueUrl=queue_url,
ReceiptHandle=message['ReceiptHandle']
)
以上代码每 20 秒轮询一次队列,如果有新消息则会立即处理并删除已处理的消息。