/* * 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 kinesis-2013-12-02.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.Kinesis.Model { /// /// Container for the parameters to the GetRecords operation. /// Gets data records from a Kinesis data stream's shard. /// /// /// /// When invoking this API, it is recommended you use the StreamARN input /// parameter in addition to the ShardIterator parameter. /// /// /// /// Specify a shard iterator using the ShardIterator parameter. The shard /// iterator specifies the position in the shard from which you want to start reading /// data records sequentially. If there are no records available in the portion of the /// shard that the iterator points to, GetRecords returns an empty list. It might /// take multiple calls to get to a portion of the shard that contains records. /// /// /// /// You can scale by provisioning multiple shards per stream while considering service /// limits (for more information, see Amazon /// Kinesis Data Streams Limits in the Amazon Kinesis Data Streams Developer Guide). /// Your application should have one thread per shard, each reading continuously from /// its stream. To read from a stream continually, call GetRecords in a loop. Use /// GetShardIterator to get the shard iterator to specify in the first GetRecords /// call. GetRecords returns a new shard iterator in NextShardIterator. /// Specify the shard iterator returned in NextShardIterator in subsequent /// calls to GetRecords. If the shard has been closed, the shard iterator can't /// return more data and GetRecords returns null in NextShardIterator. /// You can terminate the loop when the shard is closed, or when the shard iterator reaches /// the record with the sequence number or other attribute that marks it as the last record /// to process. /// /// /// /// Each data record can be up to 1 MiB in size, and each shard can read up to 2 MiB per /// second. You can ensure that your calls don't exceed the maximum supported size or /// throughput by using the Limit parameter to specify the maximum number /// of records that GetRecords can return. Consider your average record size when /// determining this limit. The maximum number of records that can be returned per call /// is 10,000. /// /// /// /// The size of the data returned by GetRecords varies depending on the utilization /// of the shard. It is recommended that consumer applications retrieve records via the /// GetRecords command using the 5 TPS limit to remain caught up. Retrieving /// records less frequently can lead to consumer applications falling behind. The maximum /// size of data that GetRecords can return is 10 MiB. If a call returns this amount /// of data, subsequent calls made within the next 5 seconds throw ProvisionedThroughputExceededException. /// If there is insufficient provisioned throughput on the stream, subsequent calls made /// within the next 1 second throw ProvisionedThroughputExceededException. /// GetRecords doesn't return any data when it throws an exception. For this reason, /// we recommend that you wait 1 second between calls to GetRecords. However, it's /// possible that the application will get exceptions for longer than 1 second. /// /// /// /// To detect whether the application is falling behind in processing, you can use the /// MillisBehindLatest response attribute. You can also monitor the stream /// using CloudWatch metrics and other mechanisms (see Monitoring /// in the Amazon Kinesis Data Streams Developer Guide). /// /// /// /// Each Amazon Kinesis record includes a value, ApproximateArrivalTimestamp, /// that is set when a stream successfully receives and stores a record. This is commonly /// referred to as a server-side time stamp, whereas a client-side time stamp is set when /// a data producer creates or sends the record to a stream (a data producer is any data /// source putting data records into a stream, for example with PutRecords). The /// time stamp has millisecond precision. There are no guarantees about the time stamp /// accuracy, or that the time stamp is always increasing. For example, records in a shard /// or across a stream might have time stamps that are out of order. /// /// /// /// This operation has a limit of five transactions per second per shard. /// /// public partial class GetRecordsRequest : AmazonKinesisRequest { private int? _limit; private string _shardIterator; private string _streamARN; /// /// Gets and sets the property Limit. /// /// The maximum number of records to return. Specify a value of up to 10,000. If you specify /// a value that is greater than 10,000, GetRecords throws InvalidArgumentException. /// The default value is 10,000. /// /// [AWSProperty(Min=1, Max=10000)] public int Limit { get { return this._limit.GetValueOrDefault(); } set { this._limit = value; } } // Check to see if Limit property is set internal bool IsSetLimit() { return this._limit.HasValue; } /// /// Gets and sets the property ShardIterator. /// /// The position in the shard from which you want to start sequentially reading data records. /// A shard iterator specifies this position using the sequence number of a data record /// in the shard. /// /// [AWSProperty(Required=true, Min=1, Max=512)] public string ShardIterator { get { return this._shardIterator; } set { this._shardIterator = value; } } // Check to see if ShardIterator property is set internal bool IsSetShardIterator() { return this._shardIterator != null; } /// /// Gets and sets the property StreamARN. /// /// The ARN of the stream. /// /// [AWSProperty(Min=1, Max=2048)] public string StreamARN { get { return this._streamARN; } set { this._streamARN = value; } } // Check to see if StreamARN property is set internal bool IsSetStreamARN() { return this._streamARN != null; } } }