private void SetAttributesIfNecessary(IMessage original, IMessage endMessage)
        {
            var needHolder     = ErrorChannel != null && RetryTemplate == null;
            var needAttributes = needHolder || RetryTemplate != null;

            if (needHolder)
            {
                _attributesHolder.Value = ErrorMessageUtils.GetAttributeAccessor(null, null);
            }

            if (needAttributes)
            {
                var attributes = RetryTemplate != null?RetrySynchronizationManager.GetContext() : _attributesHolder.Value;

                if (attributes != null)
                {
                    attributes.SetAttribute(ErrorMessageUtils.INPUT_MESSAGE_CONTEXT_KEY, endMessage);
                    attributes.SetAttribute(RabbitMessageHeaderErrorMessageStrategy.AMQP_RAW_MESSAGE, original);
                }
            }
        }
Beispiel #2
0
        private void SetAttributesIfNecessary(IMessage message)
        {
            var needHolder     = ErrorChannel != null && RetryTemplate == null;
            var needAttributes = needHolder || RetryTemplate != null;

            if (needHolder)
            {
                _attributesHolder.Value = ErrorMessageUtils.GetAttributeAccessor(null, null);
            }

            if (needAttributes)
            {
                var attributes = _attributesHolder.Value;
                if (attributes != null)
                {
                    attributes.SetAttribute(ErrorMessageUtils.INPUT_MESSAGE_CONTEXT_KEY, message);
                    if (AttributeProvider != null)
                    {
                        AttributeProvider.Invoke(attributes, message);
                    }
                }
            }
        }
 public virtual void Publish(IMessage inputMessage, IMessage failedMessage, Exception exception)
 {
     Publish(exception, ErrorMessageUtils.GetAttributeAccessor(inputMessage, failedMessage));
 }
 protected virtual IAttributeAccessor GetErrorMessageAttributes(IMessage message)
 {
     return(ErrorMessageUtils.GetAttributeAccessor(message, null));
 }