A method for performing a monitoring function for an application that passes messages between two or more endpoints, comprising: receiving a message including
transaction data, the
transaction data including data relating to transport of the
transaction data; storing the message and transaction data in respective message data and transaction data buffers in a
data store; storing status and
semantic information associated with the message in the
data store; receiving a
signal selecting one or more module instances to define the monitoring function, each module instance for independently performing a respective aspect of the monitoring function, each module instance having related module instance data stored in a respective module instance
data buffer in the
data store, each module instance having a respective
service access point for accessing the data store, each
service access point having related
service access point data stored in a respective service access
point data buffer in the data store, each module instance independently accessing one or more of the message, transaction, module instance, and service access
point data buffers to process data contained therein to perform its aspect of the monitoring function; and, initiating operation of the one or more module instances in accordance with a schedule defined by one or more routing rules, the one or more routing rules for routing a pointer to the message, as stored in the message
data buffer, between the one or more module instances to thereby perform the monitoring function.