protected override bool OnSubmit(EventData message, PartitionContext context)
        {
            if (_logger.IsEnabled(LogLevel.Debug))
            {
                _logger.LogDebug("Message submitted: {0}", new MessageContextInfo(context, message));
            }
            try
            {
                MessageBus.OnResponseArrived(message.Body.Array, _requestResponseSettings.Topic).Wait();
            }
            catch (Exception e)
            {
                if (_logger.IsEnabled(LogLevel.Error))
                {
                    _logger.LogError(e, "Error occured while consuming response message, {0}", new MessageContextInfo(context, message));
                }

                // We can only continue and process all messages in the lease

                if (_requestResponseSettings.OnResponseMessageFault != null)
                {
                    // Call the hook
                    _logger.LogDebug("Executing the attached hook from {0}", nameof(_requestResponseSettings.OnResponseMessageFault));
                    _requestResponseSettings.OnResponseMessageFault(_requestResponseSettings, message, e);
                }
            }
            return(_checkpointTrigger.Increment());
        }
Beispiel #2
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);
            }
        }