public void PriorityMustBeInteger()
        {
            var accessor = new RabbitHeaderAccessor(RabbitMessageBuilder.WithPayload("foo").Build());

            Assert.Throws <ArgumentException>(() => accessor.SetHeader(RabbitMessageHeaders.PRIORITY, "foo"));
        }
Esempio n. 2
0
        public IMessageHeaders ToMessageHeaders(IBasicProperties source, Envelope envelope, Encoding charset)
        {
            var target  = new RabbitHeaderAccessor();
            var headers = source.Headers;

            if (headers?.Count > 0)
            {
                foreach (var entry in headers)
                {
                    var key = entry.Key;
                    if (RabbitMessageHeaders.X_DELAY.Equals(key))
                    {
                        var value = entry.Value;
                        if (value is int)
                        {
                            target.ReceivedDelay = (int)value;
                        }
                    }
                    else
                    {
                        target.SetHeader(key, ConvertLongStringIfNecessary(entry.Value, charset));
                    }
                }
            }

            target.Timestamp      = source.Timestamp.UnixTime;
            target.MessageId      = source.MessageId;
            target.ReceivedUserId = source.UserId;
            target.AppId          = source.AppId;
            target.ClusterId      = source.ClusterId;
            target.Type           = source.Type;
            var deliveryMode = (int)source.DeliveryMode;

            target.ReceivedDeliveryMode = (MessageDeliveryMode)Enum.ToObject(typeof(MessageDeliveryMode), deliveryMode);
            target.DeliveryMode         = null;
            target.Expiration           = source.Expiration;
            target.Priority             = source.Priority;

            target.ContentType = source.ContentType;
            if (string.IsNullOrEmpty(target.ContentType))
            {
                target.ContentType = RabbitHeaderAccessor.DEFAULT_CONTENT_TYPE;
            }

            target.ContentEncoding = source.ContentEncoding;
            var correlationId = source.CorrelationId;

            if (!string.IsNullOrEmpty(correlationId))
            {
                target.CorrelationId = correlationId;
            }

            var replyTo = source.ReplyTo;

            if (replyTo != null)
            {
                target.ReplyTo = replyTo;
            }

            if (envelope != null)
            {
                target.ReceivedExchange   = envelope.Exchange;
                target.ReceivedRoutingKey = envelope.RoutingKey;
                target.Redelivered        = envelope.Redeliver;
                target.DeliveryTag        = envelope.DeliveryTag;
            }

            target.LeaveMutable = true;
            return(target.MessageHeaders);
        }