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(); } }
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(); } }
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); }
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)); }
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)); }
private IExchange ExchangeDeclare(string exchangeName) { var parma = new ExchangeDeclareParam(exchangeName, ExchangeType.Topic); return(advancedBus.ExchangeDeclare(parma)); }
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); }