public void RegisterQueueConfiguration(string queueName, Action <IServiceBusReceiveEndpointConfigurator, IServiceBusHost> action)
 {
     if (!QueueConfigurations.TryGetValue(queueName, out var actions))
     {
         actions = new List <Action <IServiceBusReceiveEndpointConfigurator, IServiceBusHost> >();
         QueueConfigurations[queueName] = actions;
     }
     actions.Add(action);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="queueName">Define Your QueueName, By default "_CoolBus" suffix will be added with your queue name</param>
 /// <param name="queueConfiguration">You can define queue configuration from here like Prefetch Count,Concurrent Thread Limit you can check following example.
 /// e =>
 ///{
 ///     e.LoadFrom(container);
 ///     e.PrefetchCount = 1;
 ///     e.UseConcurrencyLimit(1);
 ///}
 /// NOTE: You must write e.LoadFrom(container); if you use queueConfiguration
 /// </param>
 /// <returns></returns>
 public MassTransitRabbitMqHostingService ListenOn(string queueName, Action <IRabbitMqReceiveEndpointConfigurator> queueConfiguration = null)
 {
     /*
      * if (queueConfiguration == null)
      *  queueConfiguration = configurator =>
      *  {
      *      configurator.LoadFrom(Container);
      *  };
      */
     QueueConfigurations.Add(queueName + "_CoolBus", queueConfiguration);
     return(this);
 }
        static void Main(string[] args)
        {
            Console.WriteLine("started...");


            Func <int, string> producer = (index) =>
            {
                System.Threading.Thread.Sleep(1500);

                var todoSome = $"index:{index}";
                Console.WriteLine($" + producer => {todoSome}");
                return(todoSome);
            };

            Action <string> consumer = (result) =>
            {
                System.Threading.Thread.Sleep(1000);

                Console.WriteLine($" - consumered => {result}");
            };

            var queueConfigurations = new QueueConfigurations(3, 1);
            var queueService        = new QueueService <string>(queueConfigurations);

            queueService.StartProcess(100, producer, consumer);

            foreach (var ex in queueService.Exceptions)
            {
                Console.WriteLine($"Exception-> Method:{ex.Method}|Message:{ex.Message}");
            }


            Console.WriteLine("end...");

            Console.ReadLine();
        }
 public MassTransitRabbitMqHostingService ListenEventsOn(string queueName, Action <IRabbitMqReceiveEndpointConfigurator> configure)
 {
     QueueConfigurations.Add(queueName, configure);
     return(this);
 }