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); } } }
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)); }