Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
            }
        }