/* * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.amazonaws.services.sqs.model; import java.io.Serializable; import com.amazonaws.AmazonWebServiceRequest; /** *

* Retrieves one or more messages, with a maximum limit of 10 messages, from the * specified queue. Long poll support is enabled by using the * WaitTimeSeconds parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide. *

*

* Short poll is the default behavior where a weighted random set of machines is * sampled on a ReceiveMessage call. This means only the messages * on the sampled machines are returned. If the number of messages in the queue * is small (less than 1000), it is likely you will get fewer messages than you * requested per ReceiveMessage call. If the number of messages in * the queue is extremely small, you might not receive any messages in a * particular ReceiveMessage response; in which case you should * repeat the request. *

*

* For each message returned, the response includes the following: *

* *

* The receipt handle is the identifier you must provide when deleting the * message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer Guide. *

*

* You can provide the VisibilityTimeout parameter in your request, * which will be applied to the messages that Amazon SQS returns in the * response. If you don't include the parameter, the overall visibility timeout * for the queue is used for the returned messages. For more information, see Visibility Timeout in the Amazon SQS Developer Guide. *

*

* A message that is not deleted or a message whose visibility is not extended * before the visibility timeout expires counts as a failed receive. Depending * on the configuration of the queue, the message might be sent to the dead * letter queue. *

* *

* Going forward, new attributes might be added. If you are writing code that * calls this action, we recommend that you structure your code so that it can * handle new attributes gracefully. *

*
*/ public class ReceiveMessageRequest extends AmazonWebServiceRequest implements Serializable { /** *

* The URL of the Amazon SQS queue to take action on. *

*

* Queue URLs are case-sensitive. *

*/ private String queueUrl; /** *

* A list of attributes that need to be returned along with each message. * These attributes include: *

* *

* Any other valid special request parameters (such as the following) that * are specified are ignored: *

* */ private java.util.List attributeNames = new java.util.ArrayList(); /** *

* The name of the message attribute, where N is the index. The * message attribute name can contain the following characters: A-Z, a-z, * 0-9, underscore (_), hyphen (-), and period (.). The name must not start * or end with a period, and it should not have successive periods. The name * is case sensitive and must be unique among all attribute names for the * message. The name can be up to 256 characters long. The name can't start * with "AWS." or "Amazon." (or any variations in casing), because these * prefixes are reserved for use by Amazon Web Services. *

*

* When using ReceiveMessage, you can send a list of attribute * names to receive, or you can return all of the attributes by specifying * "All" or ".*" in your request. You can also use "bar.*" to return all * message attributes starting with the "bar" prefix. *

*/ private java.util.List messageAttributeNames = new java.util.ArrayList(); /** *

* The maximum number of messages to return. Amazon SQS never returns more * messages than this value but might return fewer. Values can be from 1 to * 10. Default is 1. *

*

* All of the messages are not necessarily returned. *

*/ private Integer maxNumberOfMessages; /** *

* The duration (in seconds) that the received messages are hidden from * subsequent retrieve requests after being retrieved by a * ReceiveMessage request. *

*/ private Integer visibilityTimeout; /** *

* The duration (in seconds) for which the call will wait for a message to * arrive in the queue before returning. If a message is available, the call * will return sooner than WaitTimeSeconds. *

*/ private Integer waitTimeSeconds; /** *

* This parameter applies only to FIFO (first-in-first-out) queues. *

*

* The token used for deduplication of ReceiveMessage calls. If * a networking issue occurs after a ReceiveMessage action, and * instead of a response you receive a generic error, you can retry the same * action with an identical ReceiveRequestAttemptId to retrieve * the same set of messages, even if their visibility timeout has not yet * expired. *

*
    *
  • *

    * You can use ReceiveRequestAttemptId only for 5 minutes after * a ReceiveMessage action. *

    *
  • *
  • *

    * When you set FifoQueue, a caller of the * ReceiveMessage action can provide a * ReceiveRequestAttemptId explicitly. *

    *
  • *
  • *

    * If a caller of the ReceiveMessage action doesn't provide a * ReceiveRequestAttemptId, Amazon SQS generates a * ReceiveRequestAttemptId. *

    *
  • *
  • *

    * You can retry the ReceiveMessage action with the same * ReceiveRequestAttemptId if none of the messages have been * modified (deleted or had their visibility changes). *

    *
  • *
  • *

    * During a visibility timeout, subsequent calls with the same * ReceiveRequestAttemptId return the same messages and receipt * handles. If a retry occurs within the deduplication interval, it resets * the visibility timeout. For more information, see Visibility Timeout in the Amazon Simple Queue Service Developer * Guide. *

    * *

    * If a caller of the ReceiveMessage action is still processing * messages when the visibility timeout expires and messages become visible, * another worker reading from the same queue can receive the same messages * and therefore process duplicates. Also, if a reader whose message * processing time is longer than the visibility timeout tries to delete the * processed messages, the action fails with an error. *

    *

    * To mitigate this effect, ensure that your application observes a safe * threshold before the visibility timeout expires and extend the visibility * timeout as necessary. *

    *
  • *
  • *

    * While messages with a particular MessageGroupId are * invisible, no more messages belonging to the same * MessageGroupId are returned until the visibility timeout * expires. You can still receive messages with another * MessageGroupId as long as it is also visible. *

    *
  • *
  • *

    * If a caller of ReceiveMessage can't track the * ReceiveRequestAttemptId, no retries will work until the * original visibility timeout expires. As a result, delays might occur but * the messages in the queue will remain in a strict order. *

    *
  • *
*

* The length of ReceiveRequestAttemptId is 128 characters. * ReceiveRequestAttemptId can contain alphanumeric characters * (a-z, A-Z, 0-9) and punctuation ( * !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* For best practices of using ReceiveRequestAttemptId, see Using the ReceiveRequestAttemptId Request Parameter in the Amazon * Simple Queue Service Developer Guide. *

*/ private String receiveRequestAttemptId; /** * Default constructor for ReceiveMessageRequest object. Callers should use * the setter or fluent setter (with...) methods to initialize any * additional object members. */ public ReceiveMessageRequest() { } /** * Constructs a new ReceiveMessageRequest object. Callers should use the * setter or fluent setter (with...) methods to initialize any additional * object members. * * @param queueUrl

* The URL of the Amazon SQS queue to take action on. *

*

* Queue URLs are case-sensitive. *

*/ public ReceiveMessageRequest(String queueUrl) { setQueueUrl(queueUrl); } /** *

* The URL of the Amazon SQS queue to take action on. *

*

* Queue URLs are case-sensitive. *

* * @return

* The URL of the Amazon SQS queue to take action on. *

*

* Queue URLs are case-sensitive. *

*/ public String getQueueUrl() { return queueUrl; } /** *

* The URL of the Amazon SQS queue to take action on. *

*

* Queue URLs are case-sensitive. *

* * @param queueUrl

* The URL of the Amazon SQS queue to take action on. *

*

* Queue URLs are case-sensitive. *

*/ public void setQueueUrl(String queueUrl) { this.queueUrl = queueUrl; } /** *

* The URL of the Amazon SQS queue to take action on. *

*

* Queue URLs are case-sensitive. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param queueUrl

* The URL of the Amazon SQS queue to take action on. *

*

* Queue URLs are case-sensitive. *

* @return A reference to this updated object so that method calls can be * chained together. */ public ReceiveMessageRequest withQueueUrl(String queueUrl) { this.queueUrl = queueUrl; return this; } /** *

* A list of attributes that need to be returned along with each message. * These attributes include: *

*
    *
  • *

    * All - Returns all values. *

    *
  • *
  • *

    * ApproximateFirstReceiveTimestamp - Returns the time the * message was first received from the queue (epoch time in milliseconds). *

    *
  • *
  • *

    * ApproximateReceiveCount - Returns the number of times a * message has been received from the queue but not deleted. *

    *
  • *
  • *

    * SenderId *

    *
      *
    • *

      * For an IAM user, returns the IAM user ID, for example * ABCDEFGHI1JKLMNOPQ23R. *

      *
    • *
    • *

      * For an IAM role, returns the IAM role ID, for example * ABCDE1F2GH3I4JK5LMNOP:i-a123b456. *

      *
    • *
    *
  • *
  • *

    * SentTimestamp - Returns the time the message was sent to the * queue (epoch time in milliseconds). *

    *
  • *
  • *

    * MessageDeduplicationId - Returns the value provided by the * sender that calls the SendMessage action. *

    *
  • *
  • *

    * MessageGroupId - Returns the value provided by the sender * that calls the SendMessage action. Messages with * the same MessageGroupId are returned in sequence. *

    *
  • *
  • *

    * SequenceNumber - Returns the value provided by Amazon SQS. *

    *
  • *
*

* Any other valid special request parameters (such as the following) that * are specified are ignored: *

*
    *
  • *

    * ApproximateNumberOfMessages *

    *
  • *
  • *

    * ApproximateNumberOfMessagesDelayed *

    *
  • *
  • *

    * ApproximateNumberOfMessagesNotVisible *

    *
  • *
  • *

    * CreatedTimestamp *

    *
  • *
  • *

    * ContentBasedDeduplication *

    *
  • *
  • *

    * DelaySeconds *

    *
  • *
  • *

    * LastModifiedTimestamp *

    *
  • *
  • *

    * MaximumMessageSize *

    *
  • *
  • *

    * MessageRetentionPeriod *

    *
  • *
  • *

    * Policy *

    *
  • *
  • *

    * QueueArn, *

    *
  • *
  • *

    * ReceiveMessageWaitTimeSeconds *

    *
  • *
  • *

    * RedrivePolicy *

    *
  • *
  • *

    * FifoQueue *

    *
  • *
  • *

    * VisibilityTimeout *

    *
  • *
* * @return

* A list of attributes that need to be returned along with each * message. These attributes include: *

*
    *
  • *

    * All - Returns all values. *

    *
  • *
  • *

    * ApproximateFirstReceiveTimestamp - Returns the time * the message was first received from the queue (epoch time in * milliseconds). *

    *
  • *
  • *

    * ApproximateReceiveCount - Returns the number of * times a message has been received from the queue but not deleted. *

    *
  • *
  • *

    * SenderId *

    *
      *
    • *

      * For an IAM user, returns the IAM user ID, for example * ABCDEFGHI1JKLMNOPQ23R. *

      *
    • *
    • *

      * For an IAM role, returns the IAM role ID, for example * ABCDE1F2GH3I4JK5LMNOP:i-a123b456. *

      *
    • *
    *
  • *
  • *

    * SentTimestamp - Returns the time the message was * sent to the queue (epoch time in milliseconds). *

    *
  • *
  • *

    * MessageDeduplicationId - Returns the value provided * by the sender that calls the SendMessage * action. *

    *
  • *
  • *

    * MessageGroupId - Returns the value provided by the * sender that calls the SendMessage action. * Messages with the same MessageGroupId are returned * in sequence. *

    *
  • *
  • *

    * SequenceNumber - Returns the value provided by * Amazon SQS. *

    *
  • *
*

* Any other valid special request parameters (such as the * following) that are specified are ignored: *

*
    *
  • *

    * ApproximateNumberOfMessages *

    *
  • *
  • *

    * ApproximateNumberOfMessagesDelayed *

    *
  • *
  • *

    * ApproximateNumberOfMessagesNotVisible *

    *
  • *
  • *

    * CreatedTimestamp *

    *
  • *
  • *

    * ContentBasedDeduplication *

    *
  • *
  • *

    * DelaySeconds *

    *
  • *
  • *

    * LastModifiedTimestamp *

    *
  • *
  • *

    * MaximumMessageSize *

    *
  • *
  • *

    * MessageRetentionPeriod *

    *
  • *
  • *

    * Policy *

    *
  • *
  • *

    * QueueArn, *

    *
  • *
  • *

    * ReceiveMessageWaitTimeSeconds *

    *
  • *
  • *

    * RedrivePolicy *

    *
  • *
  • *

    * FifoQueue *

    *
  • *
  • *

    * VisibilityTimeout *

    *
  • *
*/ public java.util.List getAttributeNames() { return attributeNames; } /** *

* A list of attributes that need to be returned along with each message. * These attributes include: *

*
    *
  • *

    * All - Returns all values. *

    *
  • *
  • *

    * ApproximateFirstReceiveTimestamp - Returns the time the * message was first received from the queue (epoch time in milliseconds). *

    *
  • *
  • *

    * ApproximateReceiveCount - Returns the number of times a * message has been received from the queue but not deleted. *

    *
  • *
  • *

    * SenderId *

    *
      *
    • *

      * For an IAM user, returns the IAM user ID, for example * ABCDEFGHI1JKLMNOPQ23R. *

      *
    • *
    • *

      * For an IAM role, returns the IAM role ID, for example * ABCDE1F2GH3I4JK5LMNOP:i-a123b456. *

      *
    • *
    *
  • *
  • *

    * SentTimestamp - Returns the time the message was sent to the * queue (epoch time in milliseconds). *

    *
  • *
  • *

    * MessageDeduplicationId - Returns the value provided by the * sender that calls the SendMessage action. *

    *
  • *
  • *

    * MessageGroupId - Returns the value provided by the sender * that calls the SendMessage action. Messages with * the same MessageGroupId are returned in sequence. *

    *
  • *
  • *

    * SequenceNumber - Returns the value provided by Amazon SQS. *

    *
  • *
*

* Any other valid special request parameters (such as the following) that * are specified are ignored: *

*
    *
  • *

    * ApproximateNumberOfMessages *

    *
  • *
  • *

    * ApproximateNumberOfMessagesDelayed *

    *
  • *
  • *

    * ApproximateNumberOfMessagesNotVisible *

    *
  • *
  • *

    * CreatedTimestamp *

    *
  • *
  • *

    * ContentBasedDeduplication *

    *
  • *
  • *

    * DelaySeconds *

    *
  • *
  • *

    * LastModifiedTimestamp *

    *
  • *
  • *

    * MaximumMessageSize *

    *
  • *
  • *

    * MessageRetentionPeriod *

    *
  • *
  • *

    * Policy *

    *
  • *
  • *

    * QueueArn, *

    *
  • *
  • *

    * ReceiveMessageWaitTimeSeconds *

    *
  • *
  • *

    * RedrivePolicy *

    *
  • *
  • *

    * FifoQueue *

    *
  • *
  • *

    * VisibilityTimeout *

    *
  • *
* * @param attributeNames

* A list of attributes that need to be returned along with each * message. These attributes include: *

*
    *
  • *

    * All - Returns all values. *

    *
  • *
  • *

    * ApproximateFirstReceiveTimestamp - Returns the * time the message was first received from the queue (epoch time * in milliseconds). *

    *
  • *
  • *

    * ApproximateReceiveCount - Returns the number of * times a message has been received from the queue but not * deleted. *

    *
  • *
  • *

    * SenderId *

    *
      *
    • *

      * For an IAM user, returns the IAM user ID, for example * ABCDEFGHI1JKLMNOPQ23R. *

      *
    • *
    • *

      * For an IAM role, returns the IAM role ID, for example * ABCDE1F2GH3I4JK5LMNOP:i-a123b456. *

      *
    • *
    *
  • *
  • *

    * SentTimestamp - Returns the time the message was * sent to the queue (epoch time in milliseconds). *

    *
  • *
  • *

    * MessageDeduplicationId - Returns the value * provided by the sender that calls the * SendMessage action. *

    *
  • *
  • *

    * MessageGroupId - Returns the value provided by * the sender that calls the SendMessage * action. Messages with the same MessageGroupId are * returned in sequence. *

    *
  • *
  • *

    * SequenceNumber - Returns the value provided by * Amazon SQS. *

    *
  • *
*

* Any other valid special request parameters (such as the * following) that are specified are ignored: *

*
    *
  • *

    * ApproximateNumberOfMessages *

    *
  • *
  • *

    * ApproximateNumberOfMessagesDelayed *

    *
  • *
  • *

    * ApproximateNumberOfMessagesNotVisible *

    *
  • *
  • *

    * CreatedTimestamp *

    *
  • *
  • *

    * ContentBasedDeduplication *

    *
  • *
  • *

    * DelaySeconds *

    *
  • *
  • *

    * LastModifiedTimestamp *

    *
  • *
  • *

    * MaximumMessageSize *

    *
  • *
  • *

    * MessageRetentionPeriod *

    *
  • *
  • *

    * Policy *

    *
  • *
  • *

    * QueueArn, *

    *
  • *
  • *

    * ReceiveMessageWaitTimeSeconds *

    *
  • *
  • *

    * RedrivePolicy *

    *
  • *
  • *

    * FifoQueue *

    *
  • *
  • *

    * VisibilityTimeout *

    *
  • *
*/ public void setAttributeNames(java.util.Collection attributeNames) { if (attributeNames == null) { this.attributeNames = null; return; } this.attributeNames = new java.util.ArrayList(attributeNames); } /** *

* A list of attributes that need to be returned along with each message. * These attributes include: *

*
    *
  • *

    * All - Returns all values. *

    *
  • *
  • *

    * ApproximateFirstReceiveTimestamp - Returns the time the * message was first received from the queue (epoch time in milliseconds). *

    *
  • *
  • *

    * ApproximateReceiveCount - Returns the number of times a * message has been received from the queue but not deleted. *

    *
  • *
  • *

    * SenderId *

    *
      *
    • *

      * For an IAM user, returns the IAM user ID, for example * ABCDEFGHI1JKLMNOPQ23R. *

      *
    • *
    • *

      * For an IAM role, returns the IAM role ID, for example * ABCDE1F2GH3I4JK5LMNOP:i-a123b456. *

      *
    • *
    *
  • *
  • *

    * SentTimestamp - Returns the time the message was sent to the * queue (epoch time in milliseconds). *

    *
  • *
  • *

    * MessageDeduplicationId - Returns the value provided by the * sender that calls the SendMessage action. *

    *
  • *
  • *

    * MessageGroupId - Returns the value provided by the sender * that calls the SendMessage action. Messages with * the same MessageGroupId are returned in sequence. *

    *
  • *
  • *

    * SequenceNumber - Returns the value provided by Amazon SQS. *

    *
  • *
*

* Any other valid special request parameters (such as the following) that * are specified are ignored: *

*
    *
  • *

    * ApproximateNumberOfMessages *

    *
  • *
  • *

    * ApproximateNumberOfMessagesDelayed *

    *
  • *
  • *

    * ApproximateNumberOfMessagesNotVisible *

    *
  • *
  • *

    * CreatedTimestamp *

    *
  • *
  • *

    * ContentBasedDeduplication *

    *
  • *
  • *

    * DelaySeconds *

    *
  • *
  • *

    * LastModifiedTimestamp *

    *
  • *
  • *

    * MaximumMessageSize *

    *
  • *
  • *

    * MessageRetentionPeriod *

    *
  • *
  • *

    * Policy *

    *
  • *
  • *

    * QueueArn, *

    *
  • *
  • *

    * ReceiveMessageWaitTimeSeconds *

    *
  • *
  • *

    * RedrivePolicy *

    *
  • *
  • *

    * FifoQueue *

    *
  • *
  • *

    * VisibilityTimeout *

    *
  • *
*

* Returns a reference to this object so that method calls can be chained * together. * * @param attributeNames

* A list of attributes that need to be returned along with each * message. These attributes include: *

*
    *
  • *

    * All - Returns all values. *

    *
  • *
  • *

    * ApproximateFirstReceiveTimestamp - Returns the * time the message was first received from the queue (epoch time * in milliseconds). *

    *
  • *
  • *

    * ApproximateReceiveCount - Returns the number of * times a message has been received from the queue but not * deleted. *

    *
  • *
  • *

    * SenderId *

    *
      *
    • *

      * For an IAM user, returns the IAM user ID, for example * ABCDEFGHI1JKLMNOPQ23R. *

      *
    • *
    • *

      * For an IAM role, returns the IAM role ID, for example * ABCDE1F2GH3I4JK5LMNOP:i-a123b456. *

      *
    • *
    *
  • *
  • *

    * SentTimestamp - Returns the time the message was * sent to the queue (epoch time in milliseconds). *

    *
  • *
  • *

    * MessageDeduplicationId - Returns the value * provided by the sender that calls the * SendMessage action. *

    *
  • *
  • *

    * MessageGroupId - Returns the value provided by * the sender that calls the SendMessage * action. Messages with the same MessageGroupId are * returned in sequence. *

    *
  • *
  • *

    * SequenceNumber - Returns the value provided by * Amazon SQS. *

    *
  • *
*

* Any other valid special request parameters (such as the * following) that are specified are ignored: *

*
    *
  • *

    * ApproximateNumberOfMessages *

    *
  • *
  • *

    * ApproximateNumberOfMessagesDelayed *

    *
  • *
  • *

    * ApproximateNumberOfMessagesNotVisible *

    *
  • *
  • *

    * CreatedTimestamp *

    *
  • *
  • *

    * ContentBasedDeduplication *

    *
  • *
  • *

    * DelaySeconds *

    *
  • *
  • *

    * LastModifiedTimestamp *

    *
  • *
  • *

    * MaximumMessageSize *

    *
  • *
  • *

    * MessageRetentionPeriod *

    *
  • *
  • *

    * Policy *

    *
  • *
  • *

    * QueueArn, *

    *
  • *
  • *

    * ReceiveMessageWaitTimeSeconds *

    *
  • *
  • *

    * RedrivePolicy *

    *
  • *
  • *

    * FifoQueue *

    *
  • *
  • *

    * VisibilityTimeout *

    *
  • *
* @return A reference to this updated object so that method calls can be * chained together. */ public ReceiveMessageRequest withAttributeNames(String... attributeNames) { if (getAttributeNames() == null) { this.attributeNames = new java.util.ArrayList(attributeNames.length); } for (String value : attributeNames) { this.attributeNames.add(value); } return this; } /** *

* A list of attributes that need to be returned along with each message. * These attributes include: *

*
    *
  • *

    * All - Returns all values. *

    *
  • *
  • *

    * ApproximateFirstReceiveTimestamp - Returns the time the * message was first received from the queue (epoch time in milliseconds). *

    *
  • *
  • *

    * ApproximateReceiveCount - Returns the number of times a * message has been received from the queue but not deleted. *

    *
  • *
  • *

    * SenderId *

    *
      *
    • *

      * For an IAM user, returns the IAM user ID, for example * ABCDEFGHI1JKLMNOPQ23R. *

      *
    • *
    • *

      * For an IAM role, returns the IAM role ID, for example * ABCDE1F2GH3I4JK5LMNOP:i-a123b456. *

      *
    • *
    *
  • *
  • *

    * SentTimestamp - Returns the time the message was sent to the * queue (epoch time in milliseconds). *

    *
  • *
  • *

    * MessageDeduplicationId - Returns the value provided by the * sender that calls the SendMessage action. *

    *
  • *
  • *

    * MessageGroupId - Returns the value provided by the sender * that calls the SendMessage action. Messages with * the same MessageGroupId are returned in sequence. *

    *
  • *
  • *

    * SequenceNumber - Returns the value provided by Amazon SQS. *

    *
  • *
*

* Any other valid special request parameters (such as the following) that * are specified are ignored: *

*
    *
  • *

    * ApproximateNumberOfMessages *

    *
  • *
  • *

    * ApproximateNumberOfMessagesDelayed *

    *
  • *
  • *

    * ApproximateNumberOfMessagesNotVisible *

    *
  • *
  • *

    * CreatedTimestamp *

    *
  • *
  • *

    * ContentBasedDeduplication *

    *
  • *
  • *

    * DelaySeconds *

    *
  • *
  • *

    * LastModifiedTimestamp *

    *
  • *
  • *

    * MaximumMessageSize *

    *
  • *
  • *

    * MessageRetentionPeriod *

    *
  • *
  • *

    * Policy *

    *
  • *
  • *

    * QueueArn, *

    *
  • *
  • *

    * ReceiveMessageWaitTimeSeconds *

    *
  • *
  • *

    * RedrivePolicy *

    *
  • *
  • *

    * FifoQueue *

    *
  • *
  • *

    * VisibilityTimeout *

    *
  • *
*

* Returns a reference to this object so that method calls can be chained * together. * * @param attributeNames

* A list of attributes that need to be returned along with each * message. These attributes include: *

*
    *
  • *

    * All - Returns all values. *

    *
  • *
  • *

    * ApproximateFirstReceiveTimestamp - Returns the * time the message was first received from the queue (epoch time * in milliseconds). *

    *
  • *
  • *

    * ApproximateReceiveCount - Returns the number of * times a message has been received from the queue but not * deleted. *

    *
  • *
  • *

    * SenderId *

    *
      *
    • *

      * For an IAM user, returns the IAM user ID, for example * ABCDEFGHI1JKLMNOPQ23R. *

      *
    • *
    • *

      * For an IAM role, returns the IAM role ID, for example * ABCDE1F2GH3I4JK5LMNOP:i-a123b456. *

      *
    • *
    *
  • *
  • *

    * SentTimestamp - Returns the time the message was * sent to the queue (epoch time in milliseconds). *

    *
  • *
  • *

    * MessageDeduplicationId - Returns the value * provided by the sender that calls the * SendMessage action. *

    *
  • *
  • *

    * MessageGroupId - Returns the value provided by * the sender that calls the SendMessage * action. Messages with the same MessageGroupId are * returned in sequence. *

    *
  • *
  • *

    * SequenceNumber - Returns the value provided by * Amazon SQS. *

    *
  • *
*

* Any other valid special request parameters (such as the * following) that are specified are ignored: *

*
    *
  • *

    * ApproximateNumberOfMessages *

    *
  • *
  • *

    * ApproximateNumberOfMessagesDelayed *

    *
  • *
  • *

    * ApproximateNumberOfMessagesNotVisible *

    *
  • *
  • *

    * CreatedTimestamp *

    *
  • *
  • *

    * ContentBasedDeduplication *

    *
  • *
  • *

    * DelaySeconds *

    *
  • *
  • *

    * LastModifiedTimestamp *

    *
  • *
  • *

    * MaximumMessageSize *

    *
  • *
  • *

    * MessageRetentionPeriod *

    *
  • *
  • *

    * Policy *

    *
  • *
  • *

    * QueueArn, *

    *
  • *
  • *

    * ReceiveMessageWaitTimeSeconds *

    *
  • *
  • *

    * RedrivePolicy *

    *
  • *
  • *

    * FifoQueue *

    *
  • *
  • *

    * VisibilityTimeout *

    *
  • *
* @return A reference to this updated object so that method calls can be * chained together. */ public ReceiveMessageRequest withAttributeNames(java.util.Collection attributeNames) { setAttributeNames(attributeNames); return this; } /** *

* The name of the message attribute, where N is the index. The * message attribute name can contain the following characters: A-Z, a-z, * 0-9, underscore (_), hyphen (-), and period (.). The name must not start * or end with a period, and it should not have successive periods. The name * is case sensitive and must be unique among all attribute names for the * message. The name can be up to 256 characters long. The name can't start * with "AWS." or "Amazon." (or any variations in casing), because these * prefixes are reserved for use by Amazon Web Services. *

*

* When using ReceiveMessage, you can send a list of attribute * names to receive, or you can return all of the attributes by specifying * "All" or ".*" in your request. You can also use "bar.*" to return all * message attributes starting with the "bar" prefix. *

* * @return

* The name of the message attribute, where N is the index. * The message attribute name can contain the following characters: * A-Z, a-z, 0-9, underscore (_), hyphen (-), and period (.). The * name must not start or end with a period, and it should not have * successive periods. The name is case sensitive and must be unique * among all attribute names for the message. The name can be up to * 256 characters long. The name can't start with "AWS." or * "Amazon." (or any variations in casing), because these prefixes * are reserved for use by Amazon Web Services. *

*

* When using ReceiveMessage, you can send a list of * attribute names to receive, or you can return all of the * attributes by specifying "All" or ".*" in your request. You can * also use "bar.*" to return all message attributes starting with * the "bar" prefix. *

*/ public java.util.List getMessageAttributeNames() { return messageAttributeNames; } /** *

* The name of the message attribute, where N is the index. The * message attribute name can contain the following characters: A-Z, a-z, * 0-9, underscore (_), hyphen (-), and period (.). The name must not start * or end with a period, and it should not have successive periods. The name * is case sensitive and must be unique among all attribute names for the * message. The name can be up to 256 characters long. The name can't start * with "AWS." or "Amazon." (or any variations in casing), because these * prefixes are reserved for use by Amazon Web Services. *

*

* When using ReceiveMessage, you can send a list of attribute * names to receive, or you can return all of the attributes by specifying * "All" or ".*" in your request. You can also use "bar.*" to return all * message attributes starting with the "bar" prefix. *

* * @param messageAttributeNames

* The name of the message attribute, where N is the * index. The message attribute name can contain the following * characters: A-Z, a-z, 0-9, underscore (_), hyphen (-), and * period (.). The name must not start or end with a period, and * it should not have successive periods. The name is case * sensitive and must be unique among all attribute names for the * message. The name can be up to 256 characters long. The name * can't start with "AWS." or "Amazon." (or any variations in * casing), because these prefixes are reserved for use by Amazon * Web Services. *

*

* When using ReceiveMessage, you can send a list of * attribute names to receive, or you can return all of the * attributes by specifying "All" or ".*" in your request. You * can also use "bar.*" to return all message attributes starting * with the "bar" prefix. *

*/ public void setMessageAttributeNames(java.util.Collection messageAttributeNames) { if (messageAttributeNames == null) { this.messageAttributeNames = null; return; } this.messageAttributeNames = new java.util.ArrayList(messageAttributeNames); } /** *

* The name of the message attribute, where N is the index. The * message attribute name can contain the following characters: A-Z, a-z, * 0-9, underscore (_), hyphen (-), and period (.). The name must not start * or end with a period, and it should not have successive periods. The name * is case sensitive and must be unique among all attribute names for the * message. The name can be up to 256 characters long. The name can't start * with "AWS." or "Amazon." (or any variations in casing), because these * prefixes are reserved for use by Amazon Web Services. *

*

* When using ReceiveMessage, you can send a list of attribute * names to receive, or you can return all of the attributes by specifying * "All" or ".*" in your request. You can also use "bar.*" to return all * message attributes starting with the "bar" prefix. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param messageAttributeNames

* The name of the message attribute, where N is the * index. The message attribute name can contain the following * characters: A-Z, a-z, 0-9, underscore (_), hyphen (-), and * period (.). The name must not start or end with a period, and * it should not have successive periods. The name is case * sensitive and must be unique among all attribute names for the * message. The name can be up to 256 characters long. The name * can't start with "AWS." or "Amazon." (or any variations in * casing), because these prefixes are reserved for use by Amazon * Web Services. *

*

* When using ReceiveMessage, you can send a list of * attribute names to receive, or you can return all of the * attributes by specifying "All" or ".*" in your request. You * can also use "bar.*" to return all message attributes starting * with the "bar" prefix. *

* @return A reference to this updated object so that method calls can be * chained together. */ public ReceiveMessageRequest withMessageAttributeNames(String... messageAttributeNames) { if (getMessageAttributeNames() == null) { this.messageAttributeNames = new java.util.ArrayList( messageAttributeNames.length); } for (String value : messageAttributeNames) { this.messageAttributeNames.add(value); } return this; } /** *

* The name of the message attribute, where N is the index. The * message attribute name can contain the following characters: A-Z, a-z, * 0-9, underscore (_), hyphen (-), and period (.). The name must not start * or end with a period, and it should not have successive periods. The name * is case sensitive and must be unique among all attribute names for the * message. The name can be up to 256 characters long. The name can't start * with "AWS." or "Amazon." (or any variations in casing), because these * prefixes are reserved for use by Amazon Web Services. *

*

* When using ReceiveMessage, you can send a list of attribute * names to receive, or you can return all of the attributes by specifying * "All" or ".*" in your request. You can also use "bar.*" to return all * message attributes starting with the "bar" prefix. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param messageAttributeNames

* The name of the message attribute, where N is the * index. The message attribute name can contain the following * characters: A-Z, a-z, 0-9, underscore (_), hyphen (-), and * period (.). The name must not start or end with a period, and * it should not have successive periods. The name is case * sensitive and must be unique among all attribute names for the * message. The name can be up to 256 characters long. The name * can't start with "AWS." or "Amazon." (or any variations in * casing), because these prefixes are reserved for use by Amazon * Web Services. *

*

* When using ReceiveMessage, you can send a list of * attribute names to receive, or you can return all of the * attributes by specifying "All" or ".*" in your request. You * can also use "bar.*" to return all message attributes starting * with the "bar" prefix. *

* @return A reference to this updated object so that method calls can be * chained together. */ public ReceiveMessageRequest withMessageAttributeNames( java.util.Collection messageAttributeNames) { setMessageAttributeNames(messageAttributeNames); return this; } /** *

* The maximum number of messages to return. Amazon SQS never returns more * messages than this value but might return fewer. Values can be from 1 to * 10. Default is 1. *

*

* All of the messages are not necessarily returned. *

* * @return

* The maximum number of messages to return. Amazon SQS never * returns more messages than this value but might return fewer. * Values can be from 1 to 10. Default is 1. *

*

* All of the messages are not necessarily returned. *

*/ public Integer getMaxNumberOfMessages() { return maxNumberOfMessages; } /** *

* The maximum number of messages to return. Amazon SQS never returns more * messages than this value but might return fewer. Values can be from 1 to * 10. Default is 1. *

*

* All of the messages are not necessarily returned. *

* * @param maxNumberOfMessages

* The maximum number of messages to return. Amazon SQS never * returns more messages than this value but might return fewer. * Values can be from 1 to 10. Default is 1. *

*

* All of the messages are not necessarily returned. *

*/ public void setMaxNumberOfMessages(Integer maxNumberOfMessages) { this.maxNumberOfMessages = maxNumberOfMessages; } /** *

* The maximum number of messages to return. Amazon SQS never returns more * messages than this value but might return fewer. Values can be from 1 to * 10. Default is 1. *

*

* All of the messages are not necessarily returned. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param maxNumberOfMessages

* The maximum number of messages to return. Amazon SQS never * returns more messages than this value but might return fewer. * Values can be from 1 to 10. Default is 1. *

*

* All of the messages are not necessarily returned. *

* @return A reference to this updated object so that method calls can be * chained together. */ public ReceiveMessageRequest withMaxNumberOfMessages(Integer maxNumberOfMessages) { this.maxNumberOfMessages = maxNumberOfMessages; return this; } /** *

* The duration (in seconds) that the received messages are hidden from * subsequent retrieve requests after being retrieved by a * ReceiveMessage request. *

* * @return

* The duration (in seconds) that the received messages are hidden * from subsequent retrieve requests after being retrieved by a * ReceiveMessage request. *

*/ public Integer getVisibilityTimeout() { return visibilityTimeout; } /** *

* The duration (in seconds) that the received messages are hidden from * subsequent retrieve requests after being retrieved by a * ReceiveMessage request. *

* * @param visibilityTimeout

* The duration (in seconds) that the received messages are * hidden from subsequent retrieve requests after being retrieved * by a ReceiveMessage request. *

*/ public void setVisibilityTimeout(Integer visibilityTimeout) { this.visibilityTimeout = visibilityTimeout; } /** *

* The duration (in seconds) that the received messages are hidden from * subsequent retrieve requests after being retrieved by a * ReceiveMessage request. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param visibilityTimeout

* The duration (in seconds) that the received messages are * hidden from subsequent retrieve requests after being retrieved * by a ReceiveMessage request. *

* @return A reference to this updated object so that method calls can be * chained together. */ public ReceiveMessageRequest withVisibilityTimeout(Integer visibilityTimeout) { this.visibilityTimeout = visibilityTimeout; return this; } /** *

* The duration (in seconds) for which the call will wait for a message to * arrive in the queue before returning. If a message is available, the call * will return sooner than WaitTimeSeconds. *

* * @return

* The duration (in seconds) for which the call will wait for a * message to arrive in the queue before returning. If a message is * available, the call will return sooner than WaitTimeSeconds. *

*/ public Integer getWaitTimeSeconds() { return waitTimeSeconds; } /** *

* The duration (in seconds) for which the call will wait for a message to * arrive in the queue before returning. If a message is available, the call * will return sooner than WaitTimeSeconds. *

* * @param waitTimeSeconds

* The duration (in seconds) for which the call will wait for a * message to arrive in the queue before returning. If a message * is available, the call will return sooner than * WaitTimeSeconds. *

*/ public void setWaitTimeSeconds(Integer waitTimeSeconds) { this.waitTimeSeconds = waitTimeSeconds; } /** *

* The duration (in seconds) for which the call will wait for a message to * arrive in the queue before returning. If a message is available, the call * will return sooner than WaitTimeSeconds. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param waitTimeSeconds

* The duration (in seconds) for which the call will wait for a * message to arrive in the queue before returning. If a message * is available, the call will return sooner than * WaitTimeSeconds. *

* @return A reference to this updated object so that method calls can be * chained together. */ public ReceiveMessageRequest withWaitTimeSeconds(Integer waitTimeSeconds) { this.waitTimeSeconds = waitTimeSeconds; return this; } /** *

* This parameter applies only to FIFO (first-in-first-out) queues. *

*

* The token used for deduplication of ReceiveMessage calls. If * a networking issue occurs after a ReceiveMessage action, and * instead of a response you receive a generic error, you can retry the same * action with an identical ReceiveRequestAttemptId to retrieve * the same set of messages, even if their visibility timeout has not yet * expired. *

*
    *
  • *

    * You can use ReceiveRequestAttemptId only for 5 minutes after * a ReceiveMessage action. *

    *
  • *
  • *

    * When you set FifoQueue, a caller of the * ReceiveMessage action can provide a * ReceiveRequestAttemptId explicitly. *

    *
  • *
  • *

    * If a caller of the ReceiveMessage action doesn't provide a * ReceiveRequestAttemptId, Amazon SQS generates a * ReceiveRequestAttemptId. *

    *
  • *
  • *

    * You can retry the ReceiveMessage action with the same * ReceiveRequestAttemptId if none of the messages have been * modified (deleted or had their visibility changes). *

    *
  • *
  • *

    * During a visibility timeout, subsequent calls with the same * ReceiveRequestAttemptId return the same messages and receipt * handles. If a retry occurs within the deduplication interval, it resets * the visibility timeout. For more information, see Visibility Timeout in the Amazon Simple Queue Service Developer * Guide. *

    * *

    * If a caller of the ReceiveMessage action is still processing * messages when the visibility timeout expires and messages become visible, * another worker reading from the same queue can receive the same messages * and therefore process duplicates. Also, if a reader whose message * processing time is longer than the visibility timeout tries to delete the * processed messages, the action fails with an error. *

    *

    * To mitigate this effect, ensure that your application observes a safe * threshold before the visibility timeout expires and extend the visibility * timeout as necessary. *

    *
  • *
  • *

    * While messages with a particular MessageGroupId are * invisible, no more messages belonging to the same * MessageGroupId are returned until the visibility timeout * expires. You can still receive messages with another * MessageGroupId as long as it is also visible. *

    *
  • *
  • *

    * If a caller of ReceiveMessage can't track the * ReceiveRequestAttemptId, no retries will work until the * original visibility timeout expires. As a result, delays might occur but * the messages in the queue will remain in a strict order. *

    *
  • *
*

* The length of ReceiveRequestAttemptId is 128 characters. * ReceiveRequestAttemptId can contain alphanumeric characters * (a-z, A-Z, 0-9) and punctuation ( * !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* For best practices of using ReceiveRequestAttemptId, see Using the ReceiveRequestAttemptId Request Parameter in the Amazon * Simple Queue Service Developer Guide. *

* * @return

* This parameter applies only to FIFO (first-in-first-out) queues. *

*

* The token used for deduplication of ReceiveMessage * calls. If a networking issue occurs after a * ReceiveMessage action, and instead of a response you * receive a generic error, you can retry the same action with an * identical ReceiveRequestAttemptId to retrieve the * same set of messages, even if their visibility timeout has not * yet expired. *

*
    *
  • *

    * You can use ReceiveRequestAttemptId only for 5 * minutes after a ReceiveMessage action. *

    *
  • *
  • *

    * When you set FifoQueue, a caller of the * ReceiveMessage action can provide a * ReceiveRequestAttemptId explicitly. *

    *
  • *
  • *

    * If a caller of the ReceiveMessage action doesn't * provide a ReceiveRequestAttemptId, Amazon SQS * generates a ReceiveRequestAttemptId. *

    *
  • *
  • *

    * You can retry the ReceiveMessage action with the * same ReceiveRequestAttemptId if none of the messages * have been modified (deleted or had their visibility changes). *

    *
  • *
  • *

    * During a visibility timeout, subsequent calls with the same * ReceiveRequestAttemptId return the same messages and * receipt handles. If a retry occurs within the deduplication * interval, it resets the visibility timeout. For more information, * see Visibility Timeout in the Amazon Simple Queue Service * Developer Guide. *

    * *

    * If a caller of the ReceiveMessage action is still * processing messages when the visibility timeout expires and * messages become visible, another worker reading from the same * queue can receive the same messages and therefore process * duplicates. Also, if a reader whose message processing time is * longer than the visibility timeout tries to delete the processed * messages, the action fails with an error. *

    *

    * To mitigate this effect, ensure that your application observes a * safe threshold before the visibility timeout expires and extend * the visibility timeout as necessary. *

    *
  • *
  • *

    * While messages with a particular MessageGroupId are * invisible, no more messages belonging to the same * MessageGroupId are returned until the visibility * timeout expires. You can still receive messages with another * MessageGroupId as long as it is also visible. *

    *
  • *
  • *

    * If a caller of ReceiveMessage can't track the * ReceiveRequestAttemptId, no retries will work until * the original visibility timeout expires. As a result, delays * might occur but the messages in the queue will remain in a strict * order. *

    *
  • *
*

* The length of ReceiveRequestAttemptId is 128 * characters. ReceiveRequestAttemptId can contain * alphanumeric characters (a-z, A-Z, * 0-9) and punctuation ( * !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* For best practices of using ReceiveRequestAttemptId, * see Using the ReceiveRequestAttemptId Request Parameter in the * Amazon Simple Queue Service Developer Guide. *

*/ public String getReceiveRequestAttemptId() { return receiveRequestAttemptId; } /** *

* This parameter applies only to FIFO (first-in-first-out) queues. *

*

* The token used for deduplication of ReceiveMessage calls. If * a networking issue occurs after a ReceiveMessage action, and * instead of a response you receive a generic error, you can retry the same * action with an identical ReceiveRequestAttemptId to retrieve * the same set of messages, even if their visibility timeout has not yet * expired. *

*
    *
  • *

    * You can use ReceiveRequestAttemptId only for 5 minutes after * a ReceiveMessage action. *

    *
  • *
  • *

    * When you set FifoQueue, a caller of the * ReceiveMessage action can provide a * ReceiveRequestAttemptId explicitly. *

    *
  • *
  • *

    * If a caller of the ReceiveMessage action doesn't provide a * ReceiveRequestAttemptId, Amazon SQS generates a * ReceiveRequestAttemptId. *

    *
  • *
  • *

    * You can retry the ReceiveMessage action with the same * ReceiveRequestAttemptId if none of the messages have been * modified (deleted or had their visibility changes). *

    *
  • *
  • *

    * During a visibility timeout, subsequent calls with the same * ReceiveRequestAttemptId return the same messages and receipt * handles. If a retry occurs within the deduplication interval, it resets * the visibility timeout. For more information, see Visibility Timeout in the Amazon Simple Queue Service Developer * Guide. *

    * *

    * If a caller of the ReceiveMessage action is still processing * messages when the visibility timeout expires and messages become visible, * another worker reading from the same queue can receive the same messages * and therefore process duplicates. Also, if a reader whose message * processing time is longer than the visibility timeout tries to delete the * processed messages, the action fails with an error. *

    *

    * To mitigate this effect, ensure that your application observes a safe * threshold before the visibility timeout expires and extend the visibility * timeout as necessary. *

    *
  • *
  • *

    * While messages with a particular MessageGroupId are * invisible, no more messages belonging to the same * MessageGroupId are returned until the visibility timeout * expires. You can still receive messages with another * MessageGroupId as long as it is also visible. *

    *
  • *
  • *

    * If a caller of ReceiveMessage can't track the * ReceiveRequestAttemptId, no retries will work until the * original visibility timeout expires. As a result, delays might occur but * the messages in the queue will remain in a strict order. *

    *
  • *
*

* The length of ReceiveRequestAttemptId is 128 characters. * ReceiveRequestAttemptId can contain alphanumeric characters * (a-z, A-Z, 0-9) and punctuation ( * !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* For best practices of using ReceiveRequestAttemptId, see Using the ReceiveRequestAttemptId Request Parameter in the Amazon * Simple Queue Service Developer Guide. *

* * @param receiveRequestAttemptId

* This parameter applies only to FIFO (first-in-first-out) * queues. *

*

* The token used for deduplication of * ReceiveMessage calls. If a networking issue * occurs after a ReceiveMessage action, and instead * of a response you receive a generic error, you can retry the * same action with an identical * ReceiveRequestAttemptId to retrieve the same set * of messages, even if their visibility timeout has not yet * expired. *

*
    *
  • *

    * You can use ReceiveRequestAttemptId only for 5 * minutes after a ReceiveMessage action. *

    *
  • *
  • *

    * When you set FifoQueue, a caller of the * ReceiveMessage action can provide a * ReceiveRequestAttemptId explicitly. *

    *
  • *
  • *

    * If a caller of the ReceiveMessage action doesn't * provide a ReceiveRequestAttemptId, Amazon SQS * generates a ReceiveRequestAttemptId. *

    *
  • *
  • *

    * You can retry the ReceiveMessage action with the * same ReceiveRequestAttemptId if none of the * messages have been modified (deleted or had their visibility * changes). *

    *
  • *
  • *

    * During a visibility timeout, subsequent calls with the same * ReceiveRequestAttemptId return the same messages * and receipt handles. If a retry occurs within the * deduplication interval, it resets the visibility timeout. For * more information, see Visibility Timeout in the Amazon Simple Queue Service * Developer Guide. *

    * *

    * If a caller of the ReceiveMessage action is still * processing messages when the visibility timeout expires and * messages become visible, another worker reading from the same * queue can receive the same messages and therefore process * duplicates. Also, if a reader whose message processing time is * longer than the visibility timeout tries to delete the * processed messages, the action fails with an error. *

    *

    * To mitigate this effect, ensure that your application observes * a safe threshold before the visibility timeout expires and * extend the visibility timeout as necessary. *

    *
  • *
  • *

    * While messages with a particular MessageGroupId * are invisible, no more messages belonging to the same * MessageGroupId are returned until the visibility * timeout expires. You can still receive messages with another * MessageGroupId as long as it is also visible. *

    *
  • *
  • *

    * If a caller of ReceiveMessage can't track the * ReceiveRequestAttemptId, no retries will work * until the original visibility timeout expires. As a result, * delays might occur but the messages in the queue will remain * in a strict order. *

    *
  • *
*

* The length of ReceiveRequestAttemptId is 128 * characters. ReceiveRequestAttemptId can contain * alphanumeric characters (a-z, A-Z, * 0-9) and punctuation ( * !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* For best practices of using * ReceiveRequestAttemptId, see Using the ReceiveRequestAttemptId Request Parameter in * the Amazon Simple Queue Service Developer Guide. *

*/ public void setReceiveRequestAttemptId(String receiveRequestAttemptId) { this.receiveRequestAttemptId = receiveRequestAttemptId; } /** *

* This parameter applies only to FIFO (first-in-first-out) queues. *

*

* The token used for deduplication of ReceiveMessage calls. If * a networking issue occurs after a ReceiveMessage action, and * instead of a response you receive a generic error, you can retry the same * action with an identical ReceiveRequestAttemptId to retrieve * the same set of messages, even if their visibility timeout has not yet * expired. *

*
    *
  • *

    * You can use ReceiveRequestAttemptId only for 5 minutes after * a ReceiveMessage action. *

    *
  • *
  • *

    * When you set FifoQueue, a caller of the * ReceiveMessage action can provide a * ReceiveRequestAttemptId explicitly. *

    *
  • *
  • *

    * If a caller of the ReceiveMessage action doesn't provide a * ReceiveRequestAttemptId, Amazon SQS generates a * ReceiveRequestAttemptId. *

    *
  • *
  • *

    * You can retry the ReceiveMessage action with the same * ReceiveRequestAttemptId if none of the messages have been * modified (deleted or had their visibility changes). *

    *
  • *
  • *

    * During a visibility timeout, subsequent calls with the same * ReceiveRequestAttemptId return the same messages and receipt * handles. If a retry occurs within the deduplication interval, it resets * the visibility timeout. For more information, see Visibility Timeout in the Amazon Simple Queue Service Developer * Guide. *

    * *

    * If a caller of the ReceiveMessage action is still processing * messages when the visibility timeout expires and messages become visible, * another worker reading from the same queue can receive the same messages * and therefore process duplicates. Also, if a reader whose message * processing time is longer than the visibility timeout tries to delete the * processed messages, the action fails with an error. *

    *

    * To mitigate this effect, ensure that your application observes a safe * threshold before the visibility timeout expires and extend the visibility * timeout as necessary. *

    *
  • *
  • *

    * While messages with a particular MessageGroupId are * invisible, no more messages belonging to the same * MessageGroupId are returned until the visibility timeout * expires. You can still receive messages with another * MessageGroupId as long as it is also visible. *

    *
  • *
  • *

    * If a caller of ReceiveMessage can't track the * ReceiveRequestAttemptId, no retries will work until the * original visibility timeout expires. As a result, delays might occur but * the messages in the queue will remain in a strict order. *

    *
  • *
*

* The length of ReceiveRequestAttemptId is 128 characters. * ReceiveRequestAttemptId can contain alphanumeric characters * (a-z, A-Z, 0-9) and punctuation ( * !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* For best practices of using ReceiveRequestAttemptId, see Using the ReceiveRequestAttemptId Request Parameter in the Amazon * Simple Queue Service Developer Guide. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param receiveRequestAttemptId

* This parameter applies only to FIFO (first-in-first-out) * queues. *

*

* The token used for deduplication of * ReceiveMessage calls. If a networking issue * occurs after a ReceiveMessage action, and instead * of a response you receive a generic error, you can retry the * same action with an identical * ReceiveRequestAttemptId to retrieve the same set * of messages, even if their visibility timeout has not yet * expired. *

*
    *
  • *

    * You can use ReceiveRequestAttemptId only for 5 * minutes after a ReceiveMessage action. *

    *
  • *
  • *

    * When you set FifoQueue, a caller of the * ReceiveMessage action can provide a * ReceiveRequestAttemptId explicitly. *

    *
  • *
  • *

    * If a caller of the ReceiveMessage action doesn't * provide a ReceiveRequestAttemptId, Amazon SQS * generates a ReceiveRequestAttemptId. *

    *
  • *
  • *

    * You can retry the ReceiveMessage action with the * same ReceiveRequestAttemptId if none of the * messages have been modified (deleted or had their visibility * changes). *

    *
  • *
  • *

    * During a visibility timeout, subsequent calls with the same * ReceiveRequestAttemptId return the same messages * and receipt handles. If a retry occurs within the * deduplication interval, it resets the visibility timeout. For * more information, see Visibility Timeout in the Amazon Simple Queue Service * Developer Guide. *

    * *

    * If a caller of the ReceiveMessage action is still * processing messages when the visibility timeout expires and * messages become visible, another worker reading from the same * queue can receive the same messages and therefore process * duplicates. Also, if a reader whose message processing time is * longer than the visibility timeout tries to delete the * processed messages, the action fails with an error. *

    *

    * To mitigate this effect, ensure that your application observes * a safe threshold before the visibility timeout expires and * extend the visibility timeout as necessary. *

    *
  • *
  • *

    * While messages with a particular MessageGroupId * are invisible, no more messages belonging to the same * MessageGroupId are returned until the visibility * timeout expires. You can still receive messages with another * MessageGroupId as long as it is also visible. *

    *
  • *
  • *

    * If a caller of ReceiveMessage can't track the * ReceiveRequestAttemptId, no retries will work * until the original visibility timeout expires. As a result, * delays might occur but the messages in the queue will remain * in a strict order. *

    *
  • *
*

* The length of ReceiveRequestAttemptId is 128 * characters. ReceiveRequestAttemptId can contain * alphanumeric characters (a-z, A-Z, * 0-9) and punctuation ( * !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* For best practices of using * ReceiveRequestAttemptId, see Using the ReceiveRequestAttemptId Request Parameter in * the Amazon Simple Queue Service Developer Guide. *

* @return A reference to this updated object so that method calls can be * chained together. */ public ReceiveMessageRequest withReceiveRequestAttemptId(String receiveRequestAttemptId) { this.receiveRequestAttemptId = receiveRequestAttemptId; return this; } /** * Returns a string representation of this object; useful for testing and * debugging. * * @return A string representation of this object. * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getQueueUrl() != null) sb.append("QueueUrl: " + getQueueUrl() + ","); if (getAttributeNames() != null) sb.append("AttributeNames: " + getAttributeNames() + ","); if (getMessageAttributeNames() != null) sb.append("MessageAttributeNames: " + getMessageAttributeNames() + ","); if (getMaxNumberOfMessages() != null) sb.append("MaxNumberOfMessages: " + getMaxNumberOfMessages() + ","); if (getVisibilityTimeout() != null) sb.append("VisibilityTimeout: " + getVisibilityTimeout() + ","); if (getWaitTimeSeconds() != null) sb.append("WaitTimeSeconds: " + getWaitTimeSeconds() + ","); if (getReceiveRequestAttemptId() != null) sb.append("ReceiveRequestAttemptId: " + getReceiveRequestAttemptId()); sb.append("}"); return sb.toString(); } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getQueueUrl() == null) ? 0 : getQueueUrl().hashCode()); hashCode = prime * hashCode + ((getAttributeNames() == null) ? 0 : getAttributeNames().hashCode()); hashCode = prime * hashCode + ((getMessageAttributeNames() == null) ? 0 : getMessageAttributeNames().hashCode()); hashCode = prime * hashCode + ((getMaxNumberOfMessages() == null) ? 0 : getMaxNumberOfMessages().hashCode()); hashCode = prime * hashCode + ((getVisibilityTimeout() == null) ? 0 : getVisibilityTimeout().hashCode()); hashCode = prime * hashCode + ((getWaitTimeSeconds() == null) ? 0 : getWaitTimeSeconds().hashCode()); hashCode = prime * hashCode + ((getReceiveRequestAttemptId() == null) ? 0 : getReceiveRequestAttemptId() .hashCode()); return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof ReceiveMessageRequest == false) return false; ReceiveMessageRequest other = (ReceiveMessageRequest) obj; if (other.getQueueUrl() == null ^ this.getQueueUrl() == null) return false; if (other.getQueueUrl() != null && other.getQueueUrl().equals(this.getQueueUrl()) == false) return false; if (other.getAttributeNames() == null ^ this.getAttributeNames() == null) return false; if (other.getAttributeNames() != null && other.getAttributeNames().equals(this.getAttributeNames()) == false) return false; if (other.getMessageAttributeNames() == null ^ this.getMessageAttributeNames() == null) return false; if (other.getMessageAttributeNames() != null && other.getMessageAttributeNames().equals(this.getMessageAttributeNames()) == false) return false; if (other.getMaxNumberOfMessages() == null ^ this.getMaxNumberOfMessages() == null) return false; if (other.getMaxNumberOfMessages() != null && other.getMaxNumberOfMessages().equals(this.getMaxNumberOfMessages()) == false) return false; if (other.getVisibilityTimeout() == null ^ this.getVisibilityTimeout() == null) return false; if (other.getVisibilityTimeout() != null && other.getVisibilityTimeout().equals(this.getVisibilityTimeout()) == false) return false; if (other.getWaitTimeSeconds() == null ^ this.getWaitTimeSeconds() == null) return false; if (other.getWaitTimeSeconds() != null && other.getWaitTimeSeconds().equals(this.getWaitTimeSeconds()) == false) return false; if (other.getReceiveRequestAttemptId() == null ^ this.getReceiveRequestAttemptId() == null) return false; if (other.getReceiveRequestAttemptId() != null && other.getReceiveRequestAttemptId().equals(this.getReceiveRequestAttemptId()) == false) return false; return true; } }