A method and apparatus pass messages between server and client applications using
a fault tolerant storage system (FTSS). The interconnection fabric that couples
the FTSS to the computer systems that host the client and server applications may
also be used to carry messages. A networked system capable of hosting a distributed
application includes a plurality of computer systems coupled to an FTSS via an
FTSS interconnection fabric. The FTSS not only processes file-related I/O transactions,
but also includes several message agents to facilitate message transfer in a reliable
and fault tolerant manner. The message agents include a conversational communication
agent, an event-based communication agent, a queue-based communication agent, a
request/reply communication agent, and an unsolicited communication agent. The
highly reliable and fault tolerant nature of the FTSS ensures that the FTSS can
guarantee delivery of a message transmitted from a sending computer system to a
destination computer system. As soon as a message is received by the FTSS from
a sending computer system, the message is committed to a nonvolatile fault tolerant
write cache. Thereafter, the message is written to a redundant array of independent
disks (RAID) of the FTSS, and processed by one of the message agents.