/// <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; } }