AWS SQS FIFO 队列不支持 maximumBatchingWindowInSeconds,因为其默认行为就是以最大批次窗口(maximumBatchingWindowInSeconds)为1秒钟。下面是一个基于 AWS Lambda 的代码示例,展示了如何处理这个问题:
import json
import boto3
def lambda_handler(event, context):
sqs = boto3.client('sqs')
queue_url = 'FIFO_QUEUE_URL'
for record in event['Records']:
body = json.loads(record['body'])
message_body = json.dumps(body)
response = sqs.send_message(
QueueUrl=queue_url,
DelaySeconds=0,
MessageBody=message_body,
MessageGroupId="MESSAGE_GROUP_ID",
MessageDeduplicationId=record['messageId']
)
return {
'statusCode': 200,
'body': json.dumps('Messages added to FIFO queue successfully!')
}
在这个示例中,我们使用 AWS Lambda 处理来自某些事件源的消息,并将其放置到SQS FIFO队列上。我们没有指定 maximumBatchingWindowInSeconds,因为我们不需要它,队列已经以1秒钟的最大批次窗口运行。