Esempio n. 1
0
        private void ConsumerOnReceived(object sender, BasicDeliverEventArgs e)
        {
            try
            {
                var props = new LinkMessageProperties();
                props.Extend(e.BasicProperties);

                var receiveProps = new LinkReceiveProperties(e.Redelivered, e.Exchange, e.RoutingKey, _queue.Name,
                                                             props.AppId == _appId);

                var token = _consumerCancellationTokenSource.Token;

                var msg = new LinkConsumedMessage <byte[]>(e.Body.ToArray(), props, receiveProps, token);

                HandleMessageAsync(msg, e.DeliveryTag);
            }
            catch (Exception ex)
            {
                _logger.Error($"Receive message error, NACKing: {ex}");

                try
                {
                    _actionQueue.Put(new LinkConsumerMessageAction(
                                         e.DeliveryTag,
                                         LinkConsumerAckStrategy.Nack,
                                         _consumerCancellationTokenSource.Token)
                                     );
                }
                catch
                {
                    // No-op
                }
            }
        }
Esempio n. 2
0
 /// <summary>
 ///     Creates instance
 /// </summary>
 /// <param name="body">Body value</param>
 /// <param name="properties">Message properties</param>
 /// <param name="receiveProperties">Receive properties</param>
 /// <param name="cancellation">Message cancellation</param>
 public LinkConsumedMessage(
     TBody body,
     LinkMessageProperties properties,
     LinkReceiveProperties receiveProperties,
     CancellationToken cancellation
     ) : base(
         body,
         properties
         )
 {
     ReceiveProperties = receiveProperties ?? throw new ArgumentNullException(nameof(receiveProperties));
     Cancellation      = cancellation;
 }
        public static ILinkConsumedMessage <object> ConstructConsumedMessage(
            Type bodyType,
            object body,
            LinkMessageProperties properties,
            LinkReceiveProperties receivedProperties,
            CancellationToken cancellation
            )
        {
            var genericType = LinkConsumedMessageType.MakeGenericType(bodyType);

            return((ILinkConsumedMessage <object>)Activator
                   .CreateInstance(genericType, body, properties, receivedProperties, cancellation));
        }