I have a little problem receiving more than 1 message/line from my queue in AWS SQS
.
Here is my code:
import boto3
import boto
AWS_ACCESS_KEY = '*****'
AWS_SECRET_ACCESS_KEY = '******'
sqs = boto3.resource('sqs', aws_access_key_id=AWS_ACCESS_KEY,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
region_name='us-east-2'
)
queue_name = 'Messages.fifo'
queue = sqs.get_queue_by_name(QueueName=queue_name)
messages = queue.receive_messages()
for message in messages:
print('Body: {0}'.format(message.body))
Any Help would be much appreciated as to why. Thanks!
The receive_messages()
function takes a MaxNumberOfMessages
parameter that defaults to 1 message. Therefore, you will need to ask for more messages.
However, the receive_messages()
documentation states:
MaxNumberOfMessages (integer) -- The maximum number of messages to return. Amazon SQS never returns more messages than this value (however, fewer messages might be returned). Valid values are 1 to 10. Default is 1.
Therefore, you might not receive the full quantity of messages on each call.
Example:
import boto3
sqs = boto3.resource('sqs')
queue = sqs.get_queue_by_name(QueueName='my-queue-name')
messages = queue.receive_messages(MaxNumberOfMessages=10)
for message in messages:
print(message.body)
message.delete()