Reliable messaging using clocks with synchronized rates
First Claim
1. At a destination computer system that is network connectable along with one or more other computer systems to a network, the destination computer system and at least one of the other computer systems having synchronized clock rates, a method for reliably processing a message, the method comprising:
- an act of receiving a first copy of a message having a message ID and a TTL value, the message ID identifying the position of the message in an interaction between a message source and the destination computer system, the TTL value indicating when the message is to expire;
an act of updating an interaction cache to indicate that the message has been received;
an act of receiving a second copy of the message subsequent to processing the first copy of the message, the second copy of the message having the message ID; and
an act of discarding the second copy of the message based on the interaction cache indicating that a message having the message ID was previously processed.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention extends to methods, systems, and computer program products for reliable messaging using clocks with synchronized rates. Embodiments of the present invention insure at-most-once delivery of messages. A source and a destination utilize clocks with synchronized rates. Messages are assigned Time-To-Live (“TTL”) values such that state information is updated the source and removed at the destination when a corresponding message timer based on a TTL value expires. Accordingly, resources consumed to maintain state information at the destination can be freed up in a shorter period of time. The source can retransmit state information to the message destination if relevant state information has been removed. Message processor instance IDs insure at-most-once delivery when a message destination suffers an involuntary memory loss. Embodiments of the present invention can also be used for exactly-once-delivery, for example, when TTL values are infinite and instance IDs are not used.
-
Citations
50 Claims
-
1. At a destination computer system that is network connectable along with one or more other computer systems to a network, the destination computer system and at least one of the other computer systems having synchronized clock rates, a method for reliably processing a message, the method comprising:
-
an act of receiving a first copy of a message having a message ID and a TTL value, the message ID identifying the position of the message in an interaction between a message source and the destination computer system, the TTL value indicating when the message is to expire;
an act of updating an interaction cache to indicate that the message has been received;
an act of receiving a second copy of the message subsequent to processing the first copy of the message, the second copy of the message having the message ID; and
an act of discarding the second copy of the message based on the interaction cache indicating that a message having the message ID was previously processed. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. At a destination computer system that is network connectable along with one or more other computer systems to a network, the destination computer system and at least one of the other computer systems having synchronized clock rates, a method for reliably processing a message, the method comprising:
-
an act of receiving a first copy of a message having an interaction ID, a message ID, and a TTL value, the message ID identifying the position of the message in an interaction specified by the interaction ID and the TTL value indicating when the message is to expire;
an act of removing at least the message ID from an interaction cache subsequent to expiration of a countdown timer based on the TTL value;
an act of receiving a second copy of the message subsequent to removing the message ID from the interaction cache;
an act of sending a request for an indication of the progress of the interaction ID to a message source, the message source having a clock rate that is synchronized with the clock rate of the destination computer system;
an act of receiving an indication that the interaction has progressed such that a message having the message ID can be discarded; and
an act of discarding the second copy of the message. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
-
-
27. At a destination computer system that is network connectable along with one or more other computer systems to a network, a method for reliably processing of a message, the method comprising:
-
an act of receiving a first copy of a message from a message source, the first copy of the message being associated with an established instance ID;
an act of processing the first copy of the message at a message processor instance that was initialized to have the established instance ID;
an act of detecting that the contents of memory utilized by the destination computer system were involuntarily lost;
an act of re-initializing the message processor instance to have an updated instance ID that differs from the established instance ID;
an act of receiving a second copy of the message subsequent to re-initializing the message processor instance, the second copy of the message being associated with the established instance ID; and
an act of rejecting the second copy of the message since the second copy of the message corresponds to an instance ID that is different than the updated instance ID. - View Dependent Claims (28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38)
-
-
39. At a source computer system that is network connectable along with one or more other computer systems to a network, the source computer system and at least one of the other computer systems having synchronized clock rates, a method for reliably processing a message, the method comprising:
-
an act of sending a first copy of a message having an interaction ID, a message ID, and a TTL value to a message destination that has a clock rate synchronized with the clock rate of the source computer system, the message ID identifying the position of the message in an interaction specified by the interaction ID and the TTL value indicating when the message is to expire;
an act of sending a second copy of the message to the message destination subsequent to sending the first copy of the message, the second copy of the message having the interaction ID, the message ID, and an updated TTL value, the updated TTL value calculated from the TTL value and the elapsed time since the first copy of the message was sent;
an act of detecting that the message no longer requires acknowledgment; and
an act of updating an interaction cache to indicate that the message no longer requires acknowledgement. - View Dependent Claims (40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50)
-
Specification