示例#1
0
文件: Form1.cs 项目: mvlese/AwsLese
        private void btnStart_Click(object sender, EventArgs e)
        {
            groupBox1.Enabled = false;
            btnStart.Enabled  = false;
            btnStop.Enabled   = true;
            btnClear.Enabled  = false;

            _mostRecentTimestamp = DateTime.MinValue;
            _nextUpdateTimestamp = DateTime.MinValue;

            ShardIteratorType iteratorType = ShardIteratorType.LATEST;

            if (rbStartOfStream.Checked)
            {
                iteratorType = ShardIteratorType.TRIM_HORIZON;
            }

            if (_tpAverageConsumer.ShardIteratorType != iteratorType)
            {
                Clear();
            }

            _tpAverageConsumer.ShardIteratorType     = iteratorType;
            _tpCorrelationConsumer.ShardIteratorType = iteratorType;

            IsReading = true;
            Read();
        }
        public KShard(string shardId, string streamName, ShardIteratorType shardIteratorType, string sequenceNumber)
        {
            ShardId           = shardId;
            StreamName        = streamName;
            ShardIteratorType = shardIteratorType;
            SequenceNumber    = sequenceNumber;

            LastUpdateUtc = DateTime.UtcNow;
        }
示例#3
0
        public ShardSettings(
            string streamName,
            string shardId,
            ShardIteratorType shardIteratorType,
            TimeSpan refreshInterval,
            int limit,
            string startingSequenceNumber = null,
            DateTime?atTimestamp          = null)
        {
            if (limit > 10000 || limit < 1)
            {
                throw new ArgumentException("Limit must be between 0 and 10000. See: http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html");
            }

            StreamName             = streamName;
            ShardId                = shardId;
            ShardIteratorType      = shardIteratorType;
            RefreshInterval        = refreshInterval;
            Limit                  = limit;
            StartingSequenceNumber = startingSequenceNumber;
            AtTimestamp            = atTimestamp;

            if (shardIteratorType == ShardIteratorType.AFTER_SEQUENCE_NUMBER ||
                shardIteratorType == ShardIteratorType.AT_SEQUENCE_NUMBER)
            {
                if (string.IsNullOrEmpty(startingSequenceNumber))
                {
                    throw new ArgumentException($"Shard iterator type [{shardIteratorType}] require starting sequence number to be provided.", nameof(startingSequenceNumber));
                }
            }
            else if (shardIteratorType == ShardIteratorType.AT_TIMESTAMP)
            {
                if (!atTimestamp.HasValue)
                {
                    throw new ArgumentException($"Shard iterator type [{shardIteratorType}] require atTimestamp to be provided.", nameof(atTimestamp));
                }
            }
        }
示例#4
0
 public ShardSettings WithShardIteratorType(ShardIteratorType shardIteratorType) =>
 new ShardSettings(this.StreamName, this.ShardId, shardIteratorType, this.RefreshInterval, this.Limit, this.StartingSequenceNumber, this.AtTimestamp);