public async Task FillData() { List <byte[]> items = new List <byte[]>(); for (int i = 0; i < 10; i++) { items.Add(Encoding.UTF8.GetBytes("No #" + i)); } TestMqServer server = new TestMqServer(); server.Initialize(40702); server.Start(300, 300); Channel channel = server.Server.FindChannel("ch-push"); Assert.NotNull(channel); ChannelQueue queue = channel.FindQueue(MessageA.ContentType); Assert.NotNull(queue); QueueFiller filler = new QueueFiller(queue); filler.FillData(items, false, true); filler.FillData(items, false, false); await Task.Delay(500); Assert.NotEmpty(queue.HighPriorityMessages); Assert.NotEmpty(queue.RegularMessages); }
public async Task FillData() { List <byte[]> items = new List <byte[]>(); for (int i = 0; i < 10; i++) { items.Add(Encoding.UTF8.GetBytes("No #" + i)); } TestHorseMq server = new TestHorseMq(); await server.Initialize(); server.Start(300, 300); HorseQueue queue = server.Server.FindQueue("push-a"); Assert.NotNull(queue); QueueFiller filler = new QueueFiller(queue); filler.FillData(items, false, true); filler.FillData(items, false, false); await Task.Delay(500); Assert.NotEmpty(queue.PriorityMessages); Assert.NotEmpty(queue.Messages); }
public async Task FillJson() { List <QueueMessageA> items = new List <QueueMessageA>(); for (int i = 0; i < 10; i++) { items.Add(new QueueMessageA("No #" + i)); } TestHorseMq server = new TestHorseMq(); await server.Initialize(); server.Start(300, 300); HorseQueue route = server.Server.FindQueue("broadcast-a"); HorseQueue push = server.Server.FindQueue("push-a"); Assert.NotNull(route); Assert.NotNull(push); QueueFiller fillerRouteA = new QueueFiller(route); QueueFiller fillerPushA = new QueueFiller(push); fillerRouteA.FillJson(items, false, false); fillerPushA.FillJson(items, false, false); await Task.Delay(500); Assert.NotEmpty(route.Messages); Assert.NotEmpty(push.Messages); }
public async Task FillJson() { List <MessageA> items = new List <MessageA>(); for (int i = 0; i < 10; i++) { items.Add(new MessageA("No #" + i)); } TestMqServer server = new TestMqServer(); server.Initialize(47701); server.Start(300, 300); Channel route = server.Server.FindChannel("ch-route"); Channel push = server.Server.FindChannel("ch-push"); Assert.NotNull(route); Assert.NotNull(push); ChannelQueue routeA = route.FindQueue(MessageA.ContentType); ChannelQueue pushA = push.FindQueue(MessageA.ContentType); Assert.NotNull(routeA); Assert.NotNull(pushA); QueueFiller fillerRouteA = new QueueFiller(routeA); QueueFiller fillerPushA = new QueueFiller(pushA); await fillerRouteA.FillJson(items, false, false); await fillerPushA.FillJson(items, false, false); await Task.Delay(500); Assert.NotEmpty(routeA.RegularMessages); Assert.NotEmpty(pushA.RegularMessages); }
/// <summary> /// Initializes queue, opens database files and fills messages into the queue /// </summary> public virtual async Task Initialize() { if (Queue.Options.Acknowledge == QueueAckDecision.None) { if (DeleteWhen == DeleteWhen.AfterAcknowledgeReceived) { throw new NotSupportedException("Delete option is AfterAcknowledgeReceived but queue Acknowledge option is None. " + "Messages are not deleted from disk with this configuration. " + "Please change queue Acknowledge option or DeleteWhen option"); } if (ProducerAckDecision == ProducerAckDecision.AfterConsumerAckReceived) { throw new NotSupportedException("Producer Ack option is AfterConsumerAckReceived but queue Acknowledge option is None. " + "Messages are not deleted from disk with this configuration. " + "Please change queue Acknowledge option or ProducerAckDecision option"); } } await Database.Open(); Queue.OnDestroyed += Destroy; List <KeyValuePair <string, int> > deliveries = null; if (UseRedelivery) { RedeliveryService = new RedeliveryService(Database.File.Filename + ".delivery"); await RedeliveryService.Load(); deliveries = RedeliveryService.GetDeliveries(); } var dict = await Database.List(); if (dict.Count > 0) { QueueFiller filler = new QueueFiller(Queue); PushResult result = filler.FillMessage(dict.Values, true, qm => { if (!UseRedelivery || deliveries == null || deliveries.Count == 0 || string.IsNullOrEmpty(qm.Message.MessageId)) { return; } var kv = deliveries.FirstOrDefault(x => x.Key == qm.Message.MessageId); if (kv.Value > 0) { qm.DeliveryCount = kv.Value; } }); if (result != PushResult.Success) { throw new InvalidOperationException($"Cannot fill messages into {Queue.Name} queue : {result}"); } } }