public async Task OnMessage(Message message) { try { await _messageBus.OnResponseArrived(message.Value, _requestResponseSettings.Topic).ConfigureAwait(false); } catch (Exception e) { if (_logger.IsEnabled(LogLevel.Error)) { _logger.LogError(e, "Error occured while consuming response message: {0}", new MessageContextInfo(_requestResponseSettings.GetGroup(), message)); } // For response messages we can only continue and process all messages in the lease // ToDo: Add support for retry ? if (_requestResponseSettings.OnResponseMessageFault != null) { // Call the hook _logger.LogTrace("Executing the attached hook from {0}", nameof(_requestResponseSettings.OnResponseMessageFault)); try { _requestResponseSettings.OnResponseMessageFault(_requestResponseSettings, message, e); } catch (Exception e2) { _logger.LogWarning(e2, "Error handling hook failed for message: {0}", new MessageContextInfo(_requestResponseSettings.GetGroup(), message)); } } } if (_checkpointTrigger.Increment()) { await _commitController.Commit(message.TopicPartitionOffset).ConfigureAwait(false); } }
public async Task Commit(TopicPartitionOffset offset) { _messageQueueWorker.WaitAll(out Message lastGoodMessage); // ToDo: Add retry functionality /* * if (lastGoodMessage == null || lastGoodMessage.TopicPartitionOffset != offset) * { * if (lastGoodMessage != null) * { * await _commitController.Commit(lastGoodMessage.TopicPartitionOffset); * } * * // ToDo: Add retry functionality * } */ await _commitController.Commit(offset); }
public async ValueTask Commit() { var result = await _messageQueueWorker.WaitAll().ConfigureAwait(false); // ToDo: Add retry functionality /* * if (lastGoodMessage == null || lastGoodMessage.TopicPartitionOffset != offset) * { * if (lastGoodMessage != null) * { * await _commitController.Commit(lastGoodMessage.TopicPartitionOffset); * } * * // ToDo: Add retry functionality * } */ if (result.LastSuccessMessage != null) { var offsetToCommit = result.LastSuccessMessage.TopicPartitionOffset; _commitController.Commit(offsetToCommit.AddOffset(1)); } }