private void MessageReceived(object sender, BasicDeliverEventArgs e) { string body = null; if (e.Body.Length > 0) { body = Encoding.UTF8.GetString(e.Body.ToArray()); } try { var exchange = e.Exchange; IEvent ev = _eventFactory.CreateEvent(exchange); ev.Payload = body; ev.RoutingKey = e.RoutingKey; ev.Context.Add("deliveryTag", e.DeliveryTag); ev.Context.Add("exchange", exchange); ev.EndpointId = e.BasicProperties.AppId; _jobDispatcher .DispatchAsync(ev, exchange, this) .ConfigureAwait(true) .GetAwaiter() .GetResult(); } catch (EventNotSupportedException ex) { _logger?.LogError(ex, ex.Message); _readChannel.BasicNack(e.DeliveryTag, false, false); } catch (CouldNotFindAnyHandlerException ex) { _logger?.LogError(ex, ex.Message); _readChannel.BasicNack(e.DeliveryTag, false, false); } catch (System.Exception ex) { _logger?.LogError(ex, ex.Message); _readChannel.BasicNack(e.DeliveryTag, false, true); } }