in SampleConsumer/SampleConsumer.cs [73:110]
private void ProcessRecordsWithRetries(List<Record> records)
{
foreach (Record rec in records)
{
bool processedSuccessfully = false;
string data = null;
for (int i = 0; i < NumRetries; ++i)
{
try
{
// As per the accompanying AmazonKinesisSampleProducer.cs, the payload
// is interpreted as UTF-8 characters.
data = System.Text.Encoding.UTF8.GetString(rec.Data);
// Uncomment the following if you wish to see the retrieved record data.
//Console.Error.WriteLine(
// String.Format("Retrieved record:\n\tpartition key = {0},\n\tsequence number = {1},\n\tdata = {2}",
// rec.PartitionKey, rec.SequenceNumber, data));
// Your own logic to process a record goes here.
processedSuccessfully = true;
break;
}
catch (Exception e)
{
Console.Error.WriteLine("Exception processing record data: " + data, e);
//Back off before retrying upon an exception.
Thread.Sleep(Backoff);
}
}
if (!processedSuccessfully)
{
Console.Error.WriteLine("Couldn't process record " + rec + ". Skipping the record.");
}
}
}