标准 SQS 队列并不保证消息的绝对有序性。但它们确实提供了“基本”的有序性保证,即“首先进先出”(FIFO)。这意味着消息将按照它们到达队列中的顺序进行处理。但是,如果消息过多或者由于某些连接问题,某些消息会“跳过”或“重复”,以及可能会出现反序。如果您需要更严格的排序保证,请考虑使用 FIFO 队列。
以下是一个 Python 代码示例,演示如何向 SQS 队列发送和接收消息。
发送消息:
import boto3
sqs = boto3.resource('sqs')
queue_name = 'my-queue'
queue = sqs.get_queue_by_name(QueueName=queue_name)
response = queue.send_message(MessageBody='Hello World!')
print(response.get('MessageId'))
接收消息:
import boto3
sqs = boto3.resource('sqs')
queue_name = 'my-queue'
queue = sqs.get_queue_by_name(QueueName=queue_name)
response = queue.receive_messages()
for message in response:
# do something with the message
print(message.body)
message.delete()