Exemplo n.º 1
0
        public async Task <IExchange> DeclareExchangeAsync(IAdvancedBus advancedBus, string exchangeName, string exchangeType)
        {
            IExchange exchange;

            if (exchanges.TryGetValue(exchangeName, out exchange))
            {
                return(exchange);
            }
            await semaphore.WaitAsync().ConfigureAwait(false);

            try
            {
                if (exchanges.TryGetValue(exchangeName, out exchange))
                {
                    return(exchange);
                }
                var param = new ExchangeDeclareParam(exchangeName, exchangeType);
                exchange = await advancedBus.ExchangeDeclareAsync(param).ConfigureAwait(false);

                exchanges[exchangeName] = exchange;
                return(exchange);
            }
            finally
            {
                semaphore.Release();
            }
        }
Exemplo n.º 2
0
        public IExchange DeclareExchange(IAdvancedBus advancedBus, string exchangeName, string exchangeType)
        {
            IExchange exchange;

            if (exchanges.TryGetValue(exchangeName, out exchange))
            {
                return(exchange);
            }
            semaphore.Wait();
            try
            {
                if (exchanges.TryGetValue(exchangeName, out exchange))
                {
                    return(exchange);
                }
                var param = new ExchangeDeclareParam(exchangeName, exchangeType);
                exchange = advancedBus.ExchangeDeclare(param);
                exchanges[exchangeName] = exchange;
                return(exchange);
            }
            finally
            {
                semaphore.Release();
            }
        }
Exemplo n.º 3
0
        private IDictionary <string, object> GetExchangeArguments(ExchangeDeclareParam param)
        {
            IDictionary <string, object> arguments = new Dictionary <string, object>();

            if (param.AlternateExchange != null)
            {
                arguments.Add("alternate-exchange", param.AlternateExchange);
            }
            if (param.Delayed)
            {
                arguments.Add("x-delayed-type", param.Type);
                param.Type = "x-delayed-message";
            }
            return(arguments);
        }
Exemplo n.º 4
0
        public IExchange ExchangeDeclare(ExchangeDeclareParam param)
        {
            var name = param.Name;

            if (param.Passive)
            {
                clientCommandDispatcher.Invoke(x => x.ExchangeDeclarePassive(name));
                return(new Exchange(name));
            }
            var arguments = GetExchangeArguments(param);

            clientCommandDispatcher.Invoke(x =>
            {
                x.ExchangeDeclare(name, param.Type, param.Durable, param.AutoDelete, arguments);
            });
            LogExchangeDeclare(param);
            return(new Exchange(name));
        }
Exemplo n.º 5
0
        public async Task <IExchange> ExchangeDeclareAsync(ExchangeDeclareParam param)
        {
            var name = param.Name;

            if (param.Passive)
            {
                await clientCommandDispatcher
                .InvokeAsync(x => x.ExchangeDeclarePassive(name))
                .ConfigureAwait(false);

                return(new Exchange(name));
            }
            var arguments = GetExchangeArguments(param);
            await clientCommandDispatcher
            .InvokeAsync(x => x.ExchangeDeclare(name, param.Type, param.Durable, param.AutoDelete, arguments))
            .ConfigureAwait(false);

            LogExchangeDeclare(param);
            return(new Exchange(name));
        }
Exemplo n.º 6
0
        private IExchange ExchangeDeclare(string exchangeName)
        {
            var parma = new ExchangeDeclareParam(exchangeName, ExchangeType.Topic);

            return(advancedBus.ExchangeDeclare(parma));
        }
Exemplo n.º 7
0
        private void LogExchangeDeclare(ExchangeDeclareParam param)
        {
            var msgTemplate = "Declared Exchange: {0} type:{1}, durable:{2}, autoDelete:{3}, delayed:{4}";

            Logger.Debug(msgTemplate, param.Name, param.Type, param.Durable, param.AutoDelete, param.Delayed);
        }