示例#1
0
        private Dictionary <string, object> GetQueueDeclareArguments(QueueDeclareParam param)
        {
            var arguments = new Dictionary <string, object>();

            if (param.PerQueueMessageTtl.HasValue)
            {
                arguments.Add("x-message-ttl", param.PerQueueMessageTtl.Value);
            }
            if (param.Expires.HasValue)
            {
                arguments.Add("x-expires", param.Expires);
            }
            if (param.MaxPriority.HasValue)
            {
                arguments.Add("x-max-priority", param.MaxPriority.Value);
            }
            if (!string.IsNullOrEmpty(param.DeadLetterExchange))
            {
                arguments.Add("x-dead-letter-exchange", param.DeadLetterExchange);
            }
            if (!string.IsNullOrEmpty(param.DeadLetterRoutingKey))
            {
                arguments.Add("x-dead-letter-routing-key", param.DeadLetterRoutingKey);
            }
            if (param.MaxLength.HasValue)
            {
                arguments.Add("x-max-length", param.MaxLength.Value);
            }
            if (param.MaxLengthBytes.HasValue)
            {
                arguments.Add("x-max-length-bytes", param.MaxLengthBytes.Value);
            }

            return(arguments);
        }
示例#2
0
        private void LogQueueDeclare(QueueDeclareParam param, Dictionary <string, object> arguments)
        {
            var msgTemplate = "Declared Queue: '{0}', durable:{1}, exclusive:{2}, autoDelete:{3}, args:{4}";
            var args        = string.Join(", ", arguments.Select(kvp => string.Format("{0}={1}", kvp.Key, kvp.Value)));

            Logger.Debug(msgTemplate, param.Name, param.Durable, param.Exclusive, param.AutoDelete, args);
        }
示例#3
0
        private IQueue QueueDeclare(string queueName)
        {
            var param = new QueueDeclareParam(queueName);

            param.AutoDelete = subConfigure.AutoDelete;
            param.Expires    = subConfigure.Expires;
            return(advancedBus.QueueDeclare(param));
        }
示例#4
0
        private IQueue DeclareQueue(string queueName)
        {
            IQueue queue = null;

            if (!declaredQueues.TryGetValue(queueName, out queue))
            {
                var param = new QueueDeclareParam(queueName);
                queue = advancedBus.QueueDeclare(param);
                declaredQueues.TryAdd(queueName, queue);
            }
            return(queue);
        }
示例#5
0
        public IQueue QueueDeclare(QueueDeclareParam param)
        {
            var name      = param.Name;
            var queue     = new Queue(name, param.Exclusive);
            var arguments = new Dictionary <string, object>();

            if (param.Passive)
            {
                clientCommandDispatcher.Invoke(x => x.QueueDeclarePassive(name));
            }
            else
            {
                arguments = GetQueueDeclareArguments(param);
                clientCommandDispatcher.Invoke(
                    x => x.QueueDeclare(name, param.Durable, param.Exclusive, param.AutoDelete, arguments));
            }
            LogQueueDeclare(param, arguments);
            return(queue);
        }
示例#6
0
        public async Task <IQueue> QueueDeclareAsync(QueueDeclareParam param)
        {
            var name      = param.Name;
            var queue     = new Queue(name, param.Exclusive);
            var arguments = new Dictionary <string, object>();

            if (param.Passive)
            {
                await clientCommandDispatcher.InvokeAsync(x => x.QueueDeclarePassive(name)).ConfigureAwait(false);
            }
            else
            {
                arguments = GetQueueDeclareArguments(param);
                await clientCommandDispatcher.InvokeAsync(
                    x => x.QueueDeclare(name, param.Durable, param.Exclusive, param.AutoDelete, arguments))
                .ConfigureAwait(false);
            }
            LogQueueDeclare(param, arguments);
            return(queue);
        }