Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon How do I set the ReceiveMessageWaitTimeSeconds parameter in Python
    AWS SQS Boto3 Python ReceiveMessageWaitTimeSeconds long polling SQS queue attributes Python AWS SDK


How do I set the ReceiveMessageWaitTimeSeconds parameter in Python


To set the `ReceiveMessageWaitTimeSeconds` parameter in Python using the Boto3 library, you can use the `set_queue_attributes` method of the SQS client. Here is an example:

python
import boto3

# Create SQS client
sqs = boto3.client('sqs')

# Set the queue URL
queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue'

# Set the attributes
attributes = {
    'ReceiveMessageWaitTimeSeconds': '20'
}

# Set the queue attributes
sqs.set_queue_attributes(
    QueueUrl=queue_url,
    Attributes=attributes
)

print("Queue attributes updated.")

This code sets the `ReceiveMessageWaitTimeSeconds` attribute to 20 seconds for the specified SQS queue. This enables long polling for the queue, allowing the `ReceiveMessage` action to wait for up to 20 seconds for a message to become available before returning an empty response[1][2].

Example with Long Polling

Here is an example of how to use long polling when receiving messages from an SQS queue:

python
import boto3

# Create SQS client
sqs = boto3.client('sqs')

# Set the queue URL
queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue'

# Receive messages with long polling
response = sqs.receive_message(
    QueueUrl=queue_url,
    AttributeNames=['SentTimestamp'],
    MaxNumberOfMessages=1,
    MessageAttributeNames=['All'],
    WaitTimeSeconds=20
)

print(response)

This code receives messages from the specified SQS queue with long polling enabled. The `WaitTimeSeconds` parameter is set to 20 seconds, which means the `ReceiveMessage` action will wait for up to 20 seconds for a message to become available before returning an empty response[1][2].

Example with Boto3

Here is an example of how to use Boto3 to set the `ReceiveMessageWaitTimeSeconds` attribute and receive messages with long polling:

python
import boto3

# Create SQS client
sqs = boto3.client('sqs')

# Set the queue URL
queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue'

# Set the attributes
attributes = {
    'ReceiveMessageWaitTimeSeconds': '20'
}

# Set the queue attributes
sqs.set_queue_attributes(
    QueueUrl=queue_url,
    Attributes=attributes
)

# Receive messages with long polling
response = sqs.receive_message(
    QueueUrl=queue_url,
    AttributeNames=['SentTimestamp'],
    MaxNumberOfMessages=1,
    MessageAttributeNames=['All'],
    WaitTimeSeconds=20
)

print(response)

This code sets the `ReceiveMessageWaitTimeSeconds` attribute to 20 seconds for the specified SQS queue and then receives messages from the queue with long polling enabled[1][2].

Citations:
[1] https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html
[2] https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html
[3] https://camel.apache.org/components/4.4.x/aws2-sqs-component.html
[4] https://hevodata.com/learn/sqs-receivemessage/
[5] https://boto3.amazonaws.com/v1/documentation/api/1.19.0/guide/sqs-example-long-polling.html