There are three different QoS levels: (1) assured or reliable, (2) guaranteed, and (3) transacted. Assured messages depend on a handshake mechanism whereby the receiving application tells the sending one that its message (or sequential block of messages) has been received. Guaranteed messaging delivers a message such that it is sent once, and once only, with the assurance that it will be delivered to the receiving application. Guaranteed messaging usually employs message persistence as a mechanism to ensure that delivery takes place even if the sender or receiver become unavailable during the time the message is sent and is in transit but has not yet been received. Transacted messages ensure that the message is part of a transaction, or end-to-end business function, such that the message is deemed to have been delivered only when the transaction as a whole is committed or completed.
Messaging Ordering and Filtering You can send and retrieve messages between communicating applications in terms of their priority, group, or identity. By assigning a priority to messages, you can ensure that higher priority messages are retrieved first;otherwise,without an assigned priority, messages are normally retrieved from message queues on a first-come, first-served basis (in IT parlance, this is called FIFO—first in, first out). Alternatively, for sender application identification reasons or to correlate messages to certain tasks, you could assign identifiers to the messages. This enables you to process a stream of related messages only when all the messages related by a common identifier have been received. Another reason for identifiers is if you wanted to create a sequence of messages within groups. You could then identify a message within a group of messages on the basis of its identification. You could even have group identifiers to then identify message groups.