Пример #1
0
        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);
            }
        }