private async Task CommitOffset(long offsetToCommit)
{
Task commitTask;
using (TimerTimeToCommitOffset.NewContext())
{
commitTask = _consumer.UpdateOrCreateOffset(_options.ConsumerGroupName, offsetToCommit);
await Task.WhenAny(commitTask, Task.Delay(_options.ReceiveWaitTimeInMs));
}
if (!commitTask.IsCompleted)
{
var innerException = commitTask.IsFaulted
? (Exception)commitTask.Exception
: new TimeoutException("Commit operation timed out");
var newException = new KafkaStreamProviderException("Commit offset operation has failed", innerException);
_logger.Error((int)KafkaErrorCodes.KafkaApplicationError, String.Format(
"KafkaQueueAdapterReceiver - Commit offset operation has failed. ConsumerGroup is {0}, offset is {1}",
_options.ConsumerGroupName, offsetToCommit), newException);
throw new KafkaStreamProviderException();
}
_logger.Verbose(
"KafkaQueueAdapterReceiver - Commited an offset to the ConsumerGroup. ConsumerGroup is {0}, offset is {1}",
_options.ConsumerGroupName, offsetToCommit);
}