Matrix Queues are Virtual queues that dynamically route messages to target queues based on matrix evaluation. During processing, the matrix evaluates the dictionary of parameters and returns an output labeled 'TargetQueue' which maps to an existing Queue and sends the message. Additional details:

  • Matrix must contain the output column TargetQueue and values must match existing Queues based on name.
  • Matrix can contain multiple outputs. All output parameters are serialized and saved to the Routing property of IQueueMessage. The Routing property is accessible under the QueueResult property of AbstractObject during processing.
  • The parameter dictionary the Matrix evaluates must be part of the parameters of the AbstractObject which is queued. The Matrix Queue expects the parameters to pre-exist and does NOT evaluate any statement or method call to produce parameters.
  • ObjectQueue has been updated to store Routing as a property which allows for retry attempts to carry routing information.

Use Cases

  • Priority Processing - Used for military priority processing where a subset of queued items must process before others. items are queued to a Matrix Queue that can route to Priority1, Priority2, PriorityN queues. The Priority queues can be configured to contain dependencies such that Priority2 must depend on Priority1 and PriorityN must depend on priority2 and so on. 
  • Critical Processing Channel - More abstractly any items that must be processed before other items can route through a matrix queue