/// <summary> /// Enqueue the messages in the collection for relaying. /// </summary> /// <param name="inboundMessages">Messages to enqueue.</param> public static void Enqueue(IList <MtaMessage> inboundMessages) { Parallel.ForEach(inboundMessages, message => { Enqueue(MtaQueuedMessage.CreateNew(message)).Wait(); }); RabbitMqManager.Ack(RabbitMqManager.RabbitMqQueue.Inbound, inboundMessages.Max(m => m.RabbitMqDeliveryTag), true); }
/// <summary> /// Enqueues the Email that we are going to relay in RabbitMQ. /// </summary> /// <param name="messageID">ID of the Message being Queued.</param> /// <param name="ipGroupID">ID of the Virtual MTA Group to send the Message through.</param> /// <param name="internalSendID">ID of the Send the Message is apart of.</param> /// <param name="mailFrom">The envelope mailfrom, should be return-path in most instances.</param> /// <param name="rcptTo">The envelope rcpt to.</param> /// <param name="message">The Email.</param> /// <returns>True if the Email has been enqueued in RabbitMQ.</returns> public static bool Enqueue(Guid messageID, int ipGroupID, int internalSendID, string mailFrom, string[] rcptTo, string message) { // Create the thing we are going to queue in RabbitMQ. MtaMessage recordToSave = new MtaMessage(messageID, ipGroupID, internalSendID, mailFrom, rcptTo, message); return(RabbitMqManager.Publish(MtaQueuedMessage.CreateNew(recordToSave), RabbitMqManager.RabbitMqQueue.InboundStaging, true)); }
/// <summary> /// Enqueues the Email that we are going to relay in RabbitMQ. /// </summary> /// <param name="messageID">ID of the Message being Queued.</param> /// <param name="ipGroupID">ID of the Virtual MTA Group to send the Message through.</param> /// <param name="internalSendID">ID of the Send the Message is apart of.</param> /// <param name="mailFrom">The envelope mailfrom, should be return-path in most instances.</param> /// <param name="rcptTo">The envelope rcpt to.</param> /// <param name="message">The Email.</param> /// <param name="priority">Priority of message.</param> /// <returns>True if the Email has been enqueued in RabbitMQ.</returns> public static async Task <bool> Enqueue(Guid messageID, int ipGroupID, int internalSendID, string mailFrom, string[] rcptTo, string message, RabbitMqPriority priority) { // Create the thing we are going to queue in RabbitMQ. var recordToSave = new MtaMessage { ID = messageID, InternalSendID = internalSendID, MailFrom = mailFrom, Message = message, RcptTo = rcptTo, VirtualMTAGroupID = ipGroupID, RabbitMqPriority = priority }; return(await RabbitMqManager.Publish(MtaQueuedMessage.CreateNew(recordToSave), RabbitMqManager.RabbitMqQueue.InboundStaging, true, priority)); }