/*
* Copyright 2010-2014 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 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 Simple Queue Service 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 message body.
///
///
-
///
/// An MD5 digest of the message body. For information about MD5, see RFC1321.
///
///
-
///
/// The
MessageId
you received when you sent the message to the queue.
///
/// -
///
/// The receipt handle.
///
///
-
///
/// The message attributes.
///
///
-
///
/// An MD5 digest of the message attributes.
///
///
///
/// The receipt handle is the identifier you must provide when deleting the message. For
/// more information, see Queue
/// and Message Identifiers in the Amazon Simple Queue Service 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 Simple Queue Service 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 from the queue but not deleted.
///
/// -
///
///
AWSTraceHeader
- Returns the AWS X-Ray trace header string.
///
/// -
///
///
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 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, 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 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 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 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.
///
///
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;
}
}
}