Exemple #1
0
        /// <summary>
        /// This method verifies your credentials, creates a Kinesis stream, waits for the stream
        /// to become active, then puts 10 records in it, and (optionally) deletes the stream.
        /// </summary>
        public static void Main(string[] args)
        {
            const string myStreamName = "myTestStream";
            const int    myStreamSize = 1;

            try
            {
                var createStreamRequest = new CreateStreamRequest();
                createStreamRequest.StreamName = myStreamName;
                createStreamRequest.ShardCount = myStreamSize;
                var createStreamReq = createStreamRequest;
                kinesisClient.CreateStream(createStreamReq);
                Console.Error.WriteLine("Created Stream : " + myStreamName);
            }
            catch (ResourceInUseException)
            {
                Console.Error.WriteLine("Producer is quitting without creating stream " + myStreamName +
                                        " to put records into as a stream of the same name already exists.");
                Environment.Exit(1);
            }

            WaitForStreamToBecomeAvailable(myStreamName);

            Console.Error.WriteLine("Putting records in stream : " + myStreamName);
            // Write 10 UTF-8 encoded records to the stream.
            for (int j = 0; j < 10; ++j)
            {
                PutRecordRequest requestRecord = new PutRecordRequest();
                requestRecord.StreamName   = myStreamName;
                requestRecord.Data         = new MemoryStream(Encoding.UTF8.GetBytes("testData-" + j));
                requestRecord.PartitionKey = "partitionKey-" + j;
                PutRecordResult putResult = kinesisClient.PutRecord(requestRecord);
                Console.Error.WriteLine(
                    String.Format("Successfully putrecord {0}:\n\t partition key = {1,15}, shard ID = {2}",
                                  j, requestRecord.PartitionKey, putResult.ShardId));
            }

            // Uncomment the following if you wish to delete the stream here.
            //Console.Error.WriteLine("Deleting stream : " + myStreamName);
            //DeleteStreamRequest deleteStreamReq = new DeleteStreamRequest();
            //deleteStreamReq.StreamName = myStreamName;
            //try
            //{
            //    kinesisClient.DeleteStream(deleteStreamReq);
            //    Console.Error.WriteLine("Stream is now being deleted : " + myStreamName);
            //}
            //catch (ResourceNotFoundException ex)
            //
            //    Console.Error.WriteLine("Stream could not be found; " + ex);
            //}
            //catch (AmazonClientException ex)
            //{
            //    Console.Error.WriteLine("Error deleting stream; " + ex);
            //}
        }
Exemple #2
0
        public static UserRecordResult FromProtobufMessage(PutRecordResult r)
        {
            var attempts = new List <Attempt>();

            foreach (var attempt in r.Attempts)
            {
                attempts.Add(Attempt.FromProtobufMessage(attempt));
            }

            return(new UserRecordResult(
                       attempts,
                       r.SequenceNumber,
                       r.ShardId,
                       r.Success));
        }
Exemple #3
0
        public Message to_put_record_result()
        {
            Message m = new Message();

            m.SourceId = source_id;
            m.Id       = (ulong)new KPLNETInterface.RandomGenerator().GetNextInt64(0, long.MaxValue);

            var prr = new PutRecordResult();

            m.PutRecordResult = prr;
            try
            {
                prr.Success = false;
            }
            catch (Exception ex) { StdErrorOut.Instance.StdOut(LogLevel.debug, ex.ToString()); throw ex; }

            for (int i = 0; i < attempts.Count; i++)
            {
                var a = new Aws.Kinesis.Protobuf.Attempt();
                prr.Attempts.Add(a);
                var delay = (i == 0) ? attempts[i].Start() - Arrival() : attempts[i].Start() - attempts[i - 1].End();
                a.Delay    = (uint)delay.TotalMilliseconds;
                a.Duration = (uint)attempts[i].duration();
                a.Success  = attempts[i].Success();

                StdErrorOut.Instance.StdOut(LogLevel.debug, "UserRecord.to_put_record_result a.Success = " + a.Success);
                if (a.Success)
                {
                    prr.ShardId        = attempts[i].Shard_id();
                    prr.SequenceNumber = attempts[i].Sequence_number();
                    prr.Success        = true;
                }
                else
                {
                    a.ErrorCode    = attempts[i].Error_code();
                    a.ErrorMessage = attempts[i].Error_message();
                }
            }

            finished = true;
            return(m);
        }