/// <summary> /// Create topology /// </summary> /// <param name="mainExchangeName"> /// The main exchange name. /// </param> /// <param name="args"> /// Wait time in millisesonds for each retry level. /// The number of retry levels is the args array length.</param> /// <returns>The created topology</returns> public Topology Create(string mainExchangeName, params object[] args) { if (mainExchangeName is null) { throw new ArgumentNullException(nameof(mainExchangeName)); } var exchange = new Exchange() { Name = mainExchangeName }; var exchanges = new List <Exchange> { exchange }; var queueRetryPackBuilder = new QueueRetryPackBuilder(); exchanges.AddRange( queueRetryPackBuilder.Create(exchange, mainExchangeName, args)); return(new Topology() { Exchanges = exchanges }); }
/// <summary> /// Create topology /// </summary> /// <param name="mainExchangeName"> /// The main exchange name. /// </param> /// <param name="args"> /// Names of queues (string) to send/funout published messages. /// Wait times in millisesonds (int) for each retry level. /// The number of retry levels is the number of int args. /// </param> /// <returns>The created topology</returns> public Topology Create(string mainExchangeName, params object[] args) { if (mainExchangeName is null) { throw new ArgumentNullException(nameof(mainExchangeName)); } var(queueNames, retryDelaysMilliseconds) = ReadArguments(args); var exchange = new Exchange() { Name = mainExchangeName, Type = ExchangeType.Fanout }; var exchanges = new List <Exchange> { exchange }; var queueRetryPackBuilder = new QueueRetryPackBuilder(); foreach (var queue in queueNames) { exchanges.AddRange( queueRetryPackBuilder.Create(exchange, queue, retryDelaysMilliseconds.ToArray())); } return(new Topology() { Exchanges = exchanges }); }