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.