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.
Μια μέθοδος τα μηνύματα μεταξύ των προγραμμάτων εφαρμογής παρέχεται που εξασφαλίζει ότι κανένα μήνυμα δεν χάνεται και κανένα δεν παραδίδεται περισσότερο από μία φορά. Η μέθοδος χρησιμοποιεί την ασύγχρονη αναμονή μηνυμάτων. Ένας ή περισσότεροι περιμένουν στη σειρά τα προγράμματα διευθυντών (100) βρίσκονται σε κάθε υπολογιστή ενός δικτύου για τον έλεγχο της μετάδοσης των μηνυμάτων σε και από εκείνο τον υπολογιστή. Τα μηνύματα που διαβιβάζονται σε έναν διαφορετικό διευθυντή σειρών αναμονής τίθενται επάνω στις ειδικές σειρές αναμονής μετάδοσης (120). Η μετάδοση σε έναν παρακείμενο διευθυντή σειρών αναμονής περιλαμβάνει μια διαδικασία αποστολής (130) στον τοπικό διευθυντή σειρών αναμονής (100) που λαμβάνει τα μηνύματα από μια σειρά αναμονής μετάδοσης και που στέλνει τα ως batch μηνυμάτων μέσα σε μια συνθποηντ-διευθυντής-ελεγχόμενη μονάδα της εργασίας. Μια λαμβάνουσα διαδικασία (150) στο λαμβάνοντα διευθυντή σειρών αναμονής λαμβάνει τα μηνύματα και τα βάζει μέσα σε μια δεύτερη συνθποηντ-διευθυντής-ελεγχόμενη μονάδα της εργασίας στις σειρές αναμονής (180) που είναι υπό έλεγχο του λαμβάνοντος διευθυντή σειρών αναμονής. Η υποχρέωση της batch συντονίζεται από τον αποστολέα που διαβιβάζει ένα αίτημα για την υποχρέωση και για την επιβεβαίωση της υποχρέωσης με το τελευταίο μήνυμα της batch, δεσμεύει στον αποστολέα που προκαλείται έπειτα από την επιβεβαίωση που στέλνεται από το δέκτη σε απάντηση στο αίτημα. Η εφεύρεση αποφεύγει την πρόσθετη ροή μηνυμάτων που είναι ένα χαρακτηριστικό γνώρισμα διφασικού δεσμεύει τις διαδικασίες, αποφεύγοντας την ανάγκη για τους διευθυντές των πόρων να συγχρονίσουν ο ένας με τον άλλον. Μειώνει περαιτέρω δεσμεύει τις ροές με να επιτρέψει την επεξεργασία κατά δεσμίδες διάφορων μηνυμάτων.