A method of delivering messages between application programs is provided which ensures that no messages are lost and none are delivered more than once. The method uses asynchronous message queuing. One or more
queue manager programs (100) is located at each computer of a network for controlling the transmission of messages to and from that computer. Messages to be transmitted to a different
queue manager are put onto special transmission queues (120). Transmission to an adjacent
queue manager comprises a sending process (130) on the local
queue manager (100) getting messages from a transmission queue and sending them as a batch of messages within a syncpoint-manager-controlled unit of work. A receiving process (150) on the receiving
queue manager receives the messages and puts them within a second syncpoint-manager-controlled unit of work to queues (180) that are under the control of the receiving
queue manager. Commitment of the batch is coordinated by the sender transmitting a request for commitment and for confirmation of commitment with the last message of the batch,
commit at the sender then being triggered by the confirmation that is sent by the
receiver in response to the request.The invention avoids the additional
message flow that is a feature of two-phase
commit procedures, avoiding the need for resource managers to synchronise with each other. It further reduces the
commit flows by permitting batching of a number of messages.