Beispiel #1
0
        protected virtual CorrelationData GenerateCorrelationData(IMessage requestMessage)
        {
            CorrelationData correlationData = null;

            if (CorrelationDataGenerator != null)
            {
                var messageId = requestMessage.Headers.Id;
                if (messageId == null)
                {
                    messageId = _no_id;
                }

                var userData = CorrelationDataGenerator.ProcessMessage(requestMessage);
                if (userData != null)
                {
                    correlationData = new CorrelationDataWrapper(messageId, userData, requestMessage);
                }
                else
                {
                    _logger?.LogDebug("'confirmCorrelationExpression' resolved to 'null'; no publisher confirm will be sent to the ack or nack channel");
                }
            }

            return(correlationData);
        }
Beispiel #2
0
        private IMessage BuildConfirmMessage(bool ack, string cause, CorrelationDataWrapper wrapper, object userCorrelationData)
        {
            if (ErrorMessageStrategy == null || ack)
            {
                var headers = new Dictionary <string, object>
                {
                    { RabbitMessageHeaders.PUBLISH_CONFIRM, ack }
                };
                if (!ack && !string.IsNullOrEmpty(cause))
                {
                    headers.Add(RabbitMessageHeaders.PUBLISH_CONFIRM_NACK_CAUSE, cause);
                }

                return(PrepareMessageBuilder(userCorrelationData)
                       .CopyHeaders(headers)
                       .Build());
            }
            else
            {
                return(ErrorMessageStrategy.BuildErrorMessage(
                           new NackedRabbitMessageException(wrapper.Message, wrapper.UserData, cause), null));
            }
        }
Beispiel #3
0
        protected virtual CorrelationData GenerateCorrelationData(IMessage requestMessage)
        {
            CorrelationData correlationData = null;

            var messageId = requestMessage.Headers.Id ?? _no_id;

            if (CorrelationDataGenerator != null)
            {
                var userData = CorrelationDataGenerator.ProcessMessage(requestMessage);

                if (userData != null)
                {
                    correlationData = new CorrelationDataWrapper(messageId, userData, requestMessage);
                }
                else
                {
                    _logger?.LogDebug("'confirmCorrelationExpression' resolved to 'null'; no publisher confirm will be sent to the ack or nack channel");
                }
            }

            if (correlationData == null)
            {
                object correlation = requestMessage.Headers[RabbitMessageHeaders.PUBLISH_CONFIRM_CORRELATION];

                if (correlation is CorrelationData cdata)
                {
                    correlationData = cdata;
                }

                if (correlationData != null)
                {
                    correlationData = new CorrelationDataWrapper(messageId, correlationData, requestMessage);
                }
            }

            return(correlationData);
        }