sqs = boto3.resource('sqs') queue = sqs.get_queue_by_name(QueueName=SQS_QUEUE_NAME) for message in messages: queue.send_message(message)
When you have really a lot of messages in an array, it is possible to send them by batch of up to 10 messages, using the send_message_batch method. When doing this, there are two problems to solve: creating the batches of 10 messages, and generating an ID for each message. AWS enforce the generation of this ID so it can send back a response containing the list of messages that failed or succeeded, identified by the ID.
Here is the new code:
sqs = boto3.resource('sqs') queue = sqs.get_queue_by_name(QueueName=SQS_QUEUE_NAME) for i in range(0, len(messages), 10): chunk = messages[i:i+10] queue.send_messages(Entries=[ { "Id": "MSG" + str(id), "MessageBody": message } for id, message in zip(range(10), chunk) ])
Our loop now jump to every tenth message. Inside the loop, we create a chunk of 10 messages, and use the send_message_batch method to send it. You can see that we use a list comprehension the runs over both the chunk and a range to generate the ID.
No comments:
Post a Comment