/// <summary>
        /// Loads messages of queues in configuration
        /// </summary>
        public async Task LoadQueues(HorseMq server)
        {
            foreach (QueueConfiguration queueConfiguration in Config.Queues)
            {
                HorseQueue queue = server.FindQueue(queueConfiguration.Name);
                if (queue == null)
                {
                    if (server.DeliveryHandlerFactory != null)
                    {
                        queue = await server.CreateQueue(queueConfiguration.Name,
                                                         queueConfiguration.Configuration.ToOptions(),
                                                         async builder =>
                        {
                            builder.DeliveryHandlerHeader   = queueConfiguration.DeliveryHandler;
                            IMessageDeliveryHandler handler = await server.DeliveryHandlerFactory(builder);
                            builder.OnAfterCompleted(b => { });                                  //don't trigger created events, it's already created and reloading
                            return(handler);
                        });
                    }
                    else
                    {
                        queue = await Extensions.CreateQueue(server,
                                                             queueConfiguration.Name,
                                                             (DeleteWhen)queueConfiguration.DeleteWhen,
                                                             (ProducerAckDecision)queueConfiguration.ProducerAck,
                                                             queueConfiguration.Configuration.ToOptions());
                    }

                    //queue creation not permitted, skip
                    if (queue == null)
                    {
                        continue;
                    }
                }
                else
                {
                    if (queue.DeliveryHandler is IPersistentDeliveryHandler deliveryHandler)
                    {
                        await deliveryHandler.Initialize();
                    }
                }

                queueConfiguration.Queue = queue;
            }
        }