示例#1
0
        protected virtual void AppendHeaders(ChannelMessage message, IBasicProperties properties)
        {
            var headers = message.Headers;

            headers[RabbitHeaderFormat.FormatWith("appId")]     = properties.AppId;
            headers[RabbitHeaderFormat.FormatWith("clusterId")] = properties.ClusterId;
            headers[RabbitHeaderFormat.FormatWith("userId")]    = properties.UserId;
            headers[RabbitHeaderFormat.FormatWith("type")]      = properties.Type;
            headers[RabbitHeaderFormat.FormatWith("priority")]  = properties.Priority.ToString(CultureInfo.InvariantCulture);

            var encoding = Encoding.UTF8;

            foreach (var key in properties.Headers.Keys)
            {
                var value = properties.Headers[key];
                if (value is int)
                {
                    headers[key] = ((int)value).ToString(CultureInfo.InvariantCulture);
                }
                else
                {
                    headers[key] = encoding.GetString((byte[])value);
                }
            }
        }
示例#2
0
        public virtual void AppendRetryAddress(BasicDeliverEventArgs message)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            var address = RetryAddressValueFormat.FormatWith(this.configuration.InputQueue);

            message.BasicProperties.Headers[RabbitHeaderFormat.FormatWith(RetryAddressHeaderKey)] = address;

            Log.Verbose("Poison message source address is '{0}'", address);
        }