AWS SQS AWS.SimpleQueueService.MessageTooLong

The message exceeds the maximum allowed size.

Understanding AWS SQS

Amazon Simple Queue Service (SQS) is a fully managed message queuing service that enables you to decouple and scale microservices, distributed systems, and serverless applications. SQS eliminates the complexity and overhead associated with managing and operating message-oriented middleware, and empowers developers to focus on differentiating work.

For more information, visit the official AWS SQS page.

Identifying the Symptom

When working with AWS SQS, you might encounter an error code: AWS.SimpleQueueService.MessageTooLong. This error indicates that the message you are trying to send to the queue exceeds the maximum allowed size.

Details About the Issue

What Does the Error Mean?

The AWS.SimpleQueueService.MessageTooLong error occurs when the message size exceeds the limit set by AWS SQS. As of the current AWS guidelines, the maximum message size allowed is 256 KB.

Why Does This Happen?

This error typically occurs when attempting to send large payloads that exceed the 256 KB limit. This can happen if the message includes large data objects or if the data is not properly compressed before sending.

Steps to Fix the Issue

1. Reduce Message Size

To resolve this issue, ensure that your message size is within the 256 KB limit. Consider the following strategies:

  • Data Compression: Use data compression techniques to reduce the size of your message payloads. Libraries such as zlib for Node.js or zlib for Python can be used to compress data before sending.
  • Data Segmentation: If the message contains multiple data objects, consider splitting the data into smaller segments and sending them as separate messages.
  • Use Amazon S3: For very large data, store the data in Amazon S3 and send a reference to the S3 object in your SQS message.

2. Validate Message Size

Before sending a message, validate its size to ensure it does not exceed the limit. Here is a sample code snippet in Python:

import boto3
import sys

sqs = boto3.client('sqs')
queue_url = 'YOUR_QUEUE_URL'

message_body = 'YOUR_MESSAGE_BODY'

if sys.getsizeof(message_body) > 262144: # 256 KB
raise ValueError("Message size exceeds 256 KB")

response = sqs.send_message(QueueUrl=queue_url, MessageBody=message_body)
print("Message sent with ID:", response['MessageId'])

Conclusion

By understanding the limitations of AWS SQS and implementing strategies to manage message sizes, you can effectively avoid the AWS.SimpleQueueService.MessageTooLong error. For more detailed guidance, refer to the AWS SQS Developer Guide.

Never debug

AWS SQS

manually again

Let Dr. Droid create custom investigation plans for your infrastructure.

Book Demo
Automate Debugging for
AWS SQS
See how Dr. Droid creates investigation plans for your infrastructure.

MORE ISSUES

Made with ❤️ in Bangalore & San Francisco 🏢

Doctor Droid