private async Task <ExchangeMessage> SendAndLog(QueueAbstract queue, ExchangeMessage message) { message = await queue.Send(message); return(message); }
public ExchangeMessage PreAndPostProcess(ExchangeMessage xm) { QXLog(xm?.uuid, "Output Node: Message Recieved From Pipe", null, "PROGRESS"); // payload is the actual content of the message to be send string message = xm.payload; // After the delivery or prior to sending a message, it can be filtered or // transformed according to the configuration for each queue // The Expression object manages the evaluation of all the filters if (expression != null) { bool pass = expression.Pass(message); logger.Info($"Top Expression Evaluated {pass}"); if (!pass) { if (altQueue != null) { logger.Info($"Sending to Alt Queue {altQueue.name}"); QXLog(xm?.uuid, "Message did not pass filter", "Sending to Alt Queue", "PROGRESS"); Task.Run(async() => { _ = await altQueue.Send(xm); }); } else { QXLog(xm?.uuid, "Message did not pass filter", "No Alt Queue Configured", "WARNING"); } xm.pass = false; return(xm); } else { xm.pass = true; } } if (topLevelFilter != null) { bool pass = topLevelFilter.Pass(message); logger.Info($"Top Filter Evaluated {pass}"); if (!pass) { if (altQueue != null) { logger.Info($"Sending to Alt Queue {altQueue.name}"); QXLog(xm?.uuid, "Message did not pass filter", "Sending to Alt Queue", "PROGRESS"); _ = altQueue.Send(xm); } else { QXLog(xm?.uuid, "Message did not pass filter", "No Alt Queue Configured", "WARNING"); } xm.pass = false; return(xm); } else { xm.pass = true; } } // If a XSLT transform has been specified if (bTransform) { QXLog(xm?.uuid, "Starting Message Transformation", null, "PROGRESS"); message = Transform(message, xslVersion); QXLog(xm?.uuid, "Message Transformation Complete", null, "PROGRESS"); xm.transformed = true; } else { xm.transformed = false; } if (message == null || message.Length == 0) { logger.Info("Message blocked by XSL Transform of Zero Length"); xm.payload = null; xm.status = "Message blocked by XSL Transform. Null or Zero Length"; QXLog(xm?.uuid, "Messaage Transformation", "Transformation resulted in a message of zero length", "WARNING"); return(xm); } xm.payload = message; QXLog(xm?.uuid, "Output Node: Post Processing Complete", null, "PROGRESS"); return(xm); }