private void HandleDequeue() { while (!IsStopping) { BasicDeliverEventArgs ea = RabbitMq.RabbitMqManager.Dequeue(RabbitMqManager.RabbitMqQueue.InboundStaging, 1, 100).FirstOrDefault(); if (ea == null) { //await Task.Delay(1000); System.Threading.Thread.Sleep(1000); continue; } MtaQueuedMessage qmsg = Serialisation.Deserialise <MtaQueuedMessage>(ea.Body).Result; MtaMessage msg = new MtaMessage { ID = qmsg.ID, InternalSendID = qmsg.InternalSendID, MailFrom = qmsg.MailFrom, RcptTo = qmsg.RcptTo, VirtualMTAGroupID = qmsg.VirtualMTAGroupID }; RabbitMqManager.Publish(msg, RabbitMqManager.RabbitMqQueue.Inbound, true, qmsg.RabbitMqPriority).Wait(); RabbitMqManager.Publish(qmsg, RabbitMqManager.RabbitMqQueue.OutboundWaiting, true, qmsg.RabbitMqPriority).Wait(); RabbitMqManager.Ack(RabbitMqManager.RabbitMqQueue.InboundStaging, ea.DeliveryTag, false); } }
private static void HandleDequeue() { if (_StartedThreads >= STAGING_DEQUEUE_THREADS) { return; } _StartedThreads++; while (true) { BasicDeliverEventArgs ea = RabbitMq.RabbitMqManager.Dequeue(RabbitMqManager.RabbitMqQueue.InboundStaging, 1, 100).FirstOrDefault(); if (ea == null) { Thread.Sleep(1000); continue; } MtaQueuedMessage qmsg = Serialisation.Deserialise <MtaQueuedMessage>(ea.Body); MtaMessage msg = new MtaMessage(qmsg.ID, qmsg.VirtualMTAGroupID, qmsg.InternalSendID, qmsg.MailFrom, qmsg.RcptTo, string.Empty); RabbitMqManager.Publish(msg, RabbitMqManager.RabbitMqQueue.Inbound, true); RabbitMqManager.Publish(qmsg, RabbitMqManager.RabbitMqQueue.OutboundWaiting, true); RabbitMqManager.Ack(RabbitMqManager.RabbitMqQueue.InboundStaging, ea.DeliveryTag, false); } }
/// <summary> /// Dequeue a message from RabbitMQ. /// </summary> /// <returns>A dequeued message or null if there weren't any.</returns> public static async Task <MtaQueuedMessage> Dequeue() { BasicDeliverEventArgs ea = RabbitMqManager.Dequeue(RabbitMqManager.RabbitMqQueue.OutboundWaiting, 1, 100).FirstOrDefault(); if (ea == null) { return(null); } MtaQueuedMessage qmsg = await Serialisation.Deserialise <MtaQueuedMessage>(ea.Body); qmsg.RabbitMqDeliveryTag = ea.DeliveryTag; qmsg.IsHandled = false; return(qmsg); }
public void CanDeSerialiseTable() { var serialiser = new Serialisation(); var generator = new TableGenerator(new GeneratorSettings { CharacterString = Alphabet.English, Size = 1000 }); var table = generator.Generate(); var result = serialiser.Serliaise(table); var resultTable = serialiser.Deserialise <TokenTableSet>(result); for (var i = 0; i < 1000; i++) { foreach (var character in Alphabet.English) { Assert.AreEqual(table.ForwardTable[i][character].Item1, resultTable.ForwardTable[i][character].Item1); Assert.AreEqual(table.ForwardTable[i][character].Item2, resultTable.ForwardTable[i][character].Item2); } } }
/// <summary> /// Dequeues a collection of inbound messages from RabbitMQ. /// </summary> /// <param name="maxItems">The maximum amount of messages to dequeue.</param> /// <returns>The dequeue messages.</returns> public static MtaMessageCollection Dequeue(int maxItems) { List <BasicDeliverEventArgs> items = RabbitMqManager.Dequeue(RabbitMqManager.RabbitMqQueue.Inbound, maxItems, 1 * 1000); MtaMessageCollection messages = new MtaMessageCollection(); if (items.Count == 0) { return(messages); } foreach (BasicDeliverEventArgs ea in items) { MtaMessage msg = Serialisation.Deserialise <MtaMessage>(ea.Body); msg.RabbitMqDeliveryTag = ea.DeliveryTag; messages.Add(msg); } return(messages); }
private static async Task HandleDequeue() { if (_StartedThreads >= STAGING_DEQUEUE_THREADS) { return; } _StartedThreads++; while (true) { BasicDeliverEventArgs ea = RabbitMq.RabbitMqManager.Dequeue(RabbitMqManager.RabbitMqQueue.InboundStaging, 1, 100).FirstOrDefault(); if (ea == null) { await Task.Delay(1000); continue; } MtaQueuedMessage qmsg = await Serialisation.Deserialise <MtaQueuedMessage>(ea.Body); MtaMessage msg = new MtaMessage { ID = qmsg.ID, InternalSendID = qmsg.InternalSendID, MailFrom = qmsg.MailFrom, RcptTo = qmsg.RcptTo, VirtualMTAGroupID = qmsg.VirtualMTAGroupID }; await RabbitMqManager.Publish(msg, RabbitMqManager.RabbitMqQueue.Inbound, true, (RabbitMqPriority)qmsg.RabbitMqPriority); await RabbitMqManager.Publish(qmsg, RabbitMqManager.RabbitMqQueue.OutboundWaiting, true, (RabbitMqPriority)qmsg.RabbitMqPriority); RabbitMqManager.Ack(RabbitMqManager.RabbitMqQueue.InboundStaging, ea.DeliveryTag, false); } }