MicroPyramid, a standard AWS consulting partner with astonishing AWS consultants, who can guide you to process message queuing system by Amazon SQS. Consult our technical experts to get best AWS consulting services with outstanding quality and productivity.
Amazon Simple Queue Service (Amazon SQS) is a distributed messaging queue oriented service.
messages are queued into SQS which are variable in size but can be no larger than 256KB. SQS doesn’t give the guarantee to the delivery order of messages. SQS messages will be delivered more than once with no guarantee to the order of message. Using Visibility Timeout we can ensure once a message has been retrieved it will not be resent for a given period of time.
In this tutorial, we'll see how to manage SQS queues and messages using boto3.
import boto3 # boto3 connect sqs = boto3.resource( 'sqs', region_name=AWS_REGION_NAME, aws_access_key_id=AWS_ACESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACESS_KEY)
In the above code, we are connecting to a sqs resource in a given region, access key id, secret key using boto3.
queue = sqs.create_queue(QueueName='testqueue', Attributes={'DelaySeconds': '5'})
We should give queue name, can also give other attributes such as delay seconds(number of seconds to wait before an item may be processed), ApproximateNumberOfMessages, MaximumMessageSize.
It returns unique queue url though which we can access queue and its messages
After connecting to a service, we are connecting a SQS Queue by giving queue name with get_queue_by_name method.
queue = sqs.get_queue_by_name(QueueName=AWS_QUEUE_NAME)
In SQS, we can create single, bulk messages in a queue using send_message and send_messages command.
response = queue.send_message( QueueUrl=url, MessageBody='message1', MessageAttributes={ 'Type': { 'name': 'String' } ) print response
It returns a message id, message body for generated message. We can alse user defined attrubutes to a individual message.
response = queue.send_messages(Entries=[{ QueueUrl=url, MessageBody='message1', MessageAttributes={ 'Type': { 'length': '09' }, {QueueUrl=url, MessageBody='message2', MessageAttributes={ 'Size': { 'size': '20' }] ) print response
Response will contain all successful message and failed messages information in a queue.
message = queue.receive_messages()[0] message = queue.receive_messages(MessageAttributeNames=['Type'])[0]
sqs message will be processed in batches, we can retrieve all messages or filter particular messages based on attribute types in a queue. We will get the message information in an xml format. We can convert it to json using xmltodict package. Here you can find relevant information to process information.
response = client.delete_message( QueueUrl=url, ReceiptHandle=MESSAGE_ID )
response = queue.delete_messages( Entries=[ { 'Id': MESSAGE_ID, 'ReceiptHandle': MESSAGE_BODY }, ] )
Here we give the queue url, message id for the message to be deleted.
response = client.delete_queue( QueueUrl=url )
When you delete a queue, you must wait at least 60 seconds to delete the queue and creating a queue with the same name.
Micropyramid is a software development and cloud consulting partner for enterprise businesses across the world. We work on python, Django, Salesforce, Angular, Reactjs, React Native, MySQL, PostgreSQL, Docker, Linux, Ansible, git, amazon web services. We are Amazon and salesforce consulting partner with 5 years of cloud architect experience. We develop e-commerce, retail, banking, machine learning, CMS, CRM web and mobile applications.
Django-CRM :Customer relationship management based on Django
Django-blog-it : django blog with complete customization and ready to use with one click installer Edit
Django-webpacker : A django compressor tool
Django-MFA : Multi Factor Authentication
Docker-box : Web Interface to manage full blown docker containers and images
More...