/* * Copyright 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. */ /* * Do not modify this file. This file is generated from the sqs-2012-11-05.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.SQS.Model { /// /// Container for the parameters to the ReceiveMessage operation. /// Retrieves one or more messages (up to 10), from the specified queue. Using the WaitTimeSeconds /// parameter enables long-poll support. For more information, see Amazon /// SQS Long Polling 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. Thus, only the messages on the sampled machines /// are returned. If the number of messages in the queue is small (fewer than 1,000), /// you most likely 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. If this happens, /// 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. The /// parameter is 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 isn't deleted or a message whose visibility isn't 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. /// /// /// /// In the future, new attributes might be added. If you write code that calls this action, /// we recommend that you structure your code so that it can handle new attributes gracefully. /// /// /// public partial class ReceiveMessageRequest : AmazonSQSRequest { private List _attributeNames = new List(); private int? _maxNumberOfMessages; private List _messageAttributeNames = new List(); private string _queueUrl; private string _receiveRequestAttemptId; private int? _visibilityTimeout; private int? _waitTimeSeconds; /// /// Empty constructor used to set properties independently even when a simple constructor is available /// public ReceiveMessageRequest() { } /// /// Instantiates ReceiveMessageRequest with the parameterized properties /// /// The URL of the Amazon SQS queue from which messages are received. Queue URLs and names are case-sensitive. public ReceiveMessageRequest(string queueUrl) { _queueUrl = queueUrl; } /// /// Gets and sets the property 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 across all queues but not deleted. /// ///
  • /// /// AWSTraceHeader – Returns the X-Ray trace header string. /// ///
  • /// /// SenderId /// ///
    • /// /// For a user, returns the 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). /// ///
  • /// /// SqsManagedSseEnabled – Enables server-side queue encryption using SQS /// owned encryption keys. Only one server-side encryption option is supported per queue /// (for example, SSE-KMS /// or SSE-SQS). /// ///
  • /// /// MessageDeduplicationId – Returns the value provided by the producer /// that calls the SendMessage action. /// ///
  • /// /// MessageGroupId – Returns the value provided by the producer that calls /// the SendMessage action. Messages with the same MessageGroupId /// are returned in sequence. /// ///
  • /// /// SequenceNumber – Returns the value provided by Amazon SQS. /// ///
///
public List AttributeNames { get { return this._attributeNames; } set { this._attributeNames = value; } } // Check to see if AttributeNames property is set internal bool IsSetAttributeNames() { return this._attributeNames != null && this._attributeNames.Count > 0; } /// /// Gets and sets the property MaxNumberOfMessages. /// /// The maximum number of messages to return. Amazon SQS never returns more messages than /// this value (however, fewer messages might be returned). Valid values: 1 to 10. Default: /// 1. /// /// public int MaxNumberOfMessages { get { return this._maxNumberOfMessages.GetValueOrDefault(); } set { this._maxNumberOfMessages = value; } } // Check to see if MaxNumberOfMessages property is set internal bool IsSetMaxNumberOfMessages() { return this._maxNumberOfMessages.HasValue; } /// /// Gets and sets the property MessageAttributeNames. /// /// The name of the message attribute, where N is the index. /// ///
  • /// /// The name can contain alphanumeric characters and the underscore (_), /// hyphen (-), and period (.). /// ///
  • /// /// The name is case-sensitive and must be unique among all attribute names for the message. /// ///
  • /// /// The name must not start with AWS-reserved prefixes such as AWS. or Amazon. /// (or any casing variants). /// ///
  • /// /// The name must not start or end with a period (.), and it should not have /// periods in succession (..). /// ///
  • /// /// The name can be up to 256 characters long. /// ///
/// /// 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 all message attributes starting /// with a prefix, for example bar.*. /// ///
public List MessageAttributeNames { get { return this._messageAttributeNames; } set { this._messageAttributeNames = value; } } // Check to see if MessageAttributeNames property is set internal bool IsSetMessageAttributeNames() { return this._messageAttributeNames != null && this._messageAttributeNames.Count > 0; } /// /// Gets and sets the property QueueUrl. /// /// The URL of the Amazon SQS queue from which messages are received. /// /// /// /// Queue URLs and names are case-sensitive. /// /// [AWSProperty(Required=true)] public string QueueUrl { get { return this._queueUrl; } set { this._queueUrl = value; } } // Check to see if QueueUrl property is set internal bool IsSetQueueUrl() { return this._queueUrl != null; } /// /// Gets and sets the property 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, it is possible to 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. /// ///
  • /// /// It is possible to 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 SQS Developer Guide. /// /// /// /// If a caller of the ReceiveMessage action still processes messages when /// the visibility timeout expires and messages become visible, another worker consuming /// from the same queue can receive the same messages and therefore process duplicates. /// Also, if a consumer 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 work until the original visibility timeout expires. As a result, delays /// might occur but the messages in the queue remain in a strict order. /// ///
/// /// The maximum 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 SQS Developer Guide. /// ///
public string ReceiveRequestAttemptId { get { return this._receiveRequestAttemptId; } set { this._receiveRequestAttemptId = value; } } // Check to see if ReceiveRequestAttemptId property is set internal bool IsSetReceiveRequestAttemptId() { return this._receiveRequestAttemptId != null; } /// /// Gets and sets the property VisibilityTimeout. /// /// The duration (in seconds) that the received messages are hidden from subsequent retrieve /// requests after being retrieved by a ReceiveMessage request. /// /// public int VisibilityTimeout { get { return this._visibilityTimeout.GetValueOrDefault(); } set { this._visibilityTimeout = value; } } // Check to see if VisibilityTimeout property is set internal bool IsSetVisibilityTimeout() { return this._visibilityTimeout.HasValue; } /// /// Gets and sets the property WaitTimeSeconds. /// /// The duration (in seconds) for which the call waits for a message to arrive in the /// queue before returning. If a message is available, the call returns sooner than WaitTimeSeconds. /// If no messages are available and the wait time expires, the call returns successfully /// with an empty list of messages. /// /// /// /// To avoid HTTP errors, ensure that the HTTP response timeout for ReceiveMessage /// requests is longer than the WaitTimeSeconds parameter. For example, with /// the Java SDK, you can set HTTP transport settings using the /// NettyNioAsyncHttpClient for asynchronous clients, or the /// ApacheHttpClient for synchronous clients. /// /// /// public int WaitTimeSeconds { get { return this._waitTimeSeconds.GetValueOrDefault(); } set { this._waitTimeSeconds = value; } } // Check to see if WaitTimeSeconds property is set internal bool IsSetWaitTimeSeconds() { return this._waitTimeSeconds.HasValue; } } }