Timeout-based Delivery
Clients acknowledge message receptions to ensure that messages are received properly.
How can it be ensured that messages are only deleted from a message queue if they have been received successfully at least once? |
Context
In addition to ensuring that messages are not lost while they are traversing a Message-oriented Middleware it may, thus, also be required to assure that they are actually received by a client before they are deleted from a message queue.
Solution
To assure that a message is properly received, it is not deleted immediately after it has been read by a client, but is only marked as being invisible. In this state a message may not be read by another client. After a client has successfully read a message, it sends an acknowledgement to the message queue upon which reception the message is deleted.