Class QueueAttributesManager
java.lang.Object
software.amazon.awssdk.services.sqs.internal.batchmanager.QueueAttributesManager
The
QueueAttributesManager
class is responsible for managing and retrieving specific attributes
of an AWS SQS queue, such as message wait time and visibility timeout. It efficiently caches these attributes
to minimize redundant API calls to SQS, ensuring that the attributes are fetched only once and reused in subsequent requests.
This class uses an AtomicReference
to maintain the state of the attribute map, allowing concurrent access
and handling cases where the fetching of attributes may fail. If an error occurs during the retrieval of attributes,
the state is reset to allow for a fresh attempt in subsequent calls.
The class provides methods to get the visibility timeout and calculate the message receive timeout, which
are asynchronously retrieved and processed using CompletableFuture
. These methods handle cancellation
scenarios by cancelling the SQS request if the calling future is cancelled.
This class is intended for internal use and is marked with the SdkInternalApi
annotation.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetReceiveMessageTimeout
(ReceiveMessageRequest rq, Duration configuredWaitTime) Retrieves the received message timeout based on the provided request and queue attributes.Retrieves the visibility timeout for the queue.
-
Constructor Details
-
QueueAttributesManager
-
-
Method Details
-
getReceiveMessageTimeout
public CompletableFuture<Duration> getReceiveMessageTimeout(ReceiveMessageRequest rq, Duration configuredWaitTime) Retrieves the received message timeout based on the provided request and queue attributes.- Parameters:
rq
- The receive message requestconfiguredWaitTime
- The configured minimum wait time- Returns:
- CompletableFuture with the calculated receive message timeout in milliseconds
-
getVisibilityTimeout
Retrieves the visibility timeout for the queue.- Returns:
- CompletableFuture with the visibility timeout in nanoseconds
-