在使用AWS SQS FIFO队列时,可以启用ContentBasedDeduplication或提供显式的MessageDeduplicationId来处理重复消息。
import boto3
# 创建SQS客户端
sqs = boto3.client('sqs')
# 创建FIFO队列
response = sqs.create_queue(
QueueName='my-fifo-queue.fifo',
Attributes={
'FifoQueue': 'true',
'ContentBasedDeduplication': 'true'
}
)
# 发送消息到FIFO队列
response = sqs.send_message(
QueueUrl='FIFO_QUEUE_URL',
MessageBody='Hello World',
MessageGroupId='group1'
)
# 接收消息
response = sqs.receive_message(
QueueUrl='FIFO_QUEUE_URL',
MaxNumberOfMessages=1
)
# 打印接收到的消息
for message in response['Messages']:
print(message['Body'])
# 删除已接收的消息
sqs.delete_message(
QueueUrl='FIFO_QUEUE_URL',
ReceiptHandle=message['ReceiptHandle']
)
import boto3
# 创建SQS客户端
sqs = boto3.client('sqs')
# 创建FIFO队列
response = sqs.create_queue(
QueueName='my-fifo-queue.fifo',
Attributes={
'FifoQueue': 'true',
}
)
# 发送消息到FIFO队列,并提供MessageDeduplicationId
response = sqs.send_message(
QueueUrl='FIFO_QUEUE_URL',
MessageBody='Hello World',
MessageGroupId='group1',
MessageDeduplicationId='unique-id-1'
)
# 接收消息
response = sqs.receive_message(
QueueUrl='FIFO_QUEUE_URL',
MaxNumberOfMessages=1
)
# 打印接收到的消息
for message in response['Messages']:
print(message['Body'])
# 删除已接收的消息
sqs.delete_message(
QueueUrl='FIFO_QUEUE_URL',
ReceiptHandle=message['ReceiptHandle']
)
上述代码示例演示了如何在AWS SQS FIFO队列中启用ContentBasedDeduplication或提供显式的MessageDeduplicationId来处理重复消息。根据具体的业务需求选择适合的方式来处理重复消息。