Message state maintenance at a message log
First Claim
1. In a componentized messaging system including a sending computer system with a message log, a second different receiving computer system with a cursor, and a computer network, wherein the sending computer system and the receiving computer system are connected to the network, the componentized message system for delivering messages from a message producer to a message consumer, the message log for capturing messages for delivery to the message consumer, the cursor maintaining message state for the message consumer such that message consumer state is maintained separate from the sending computer system, a method for maintaining message log state, the method comprising:
- an act of a computing system receiving a first message from the message producer that is to be stored in the message log, wherein the computing system includes one or more processor;
an act of the computing system assigning a sequence number for the first message;
an act of the computing system indicating in the message log that a write status of the first message is in doubt without making a first portion of the message log corresponding to assigned sequence numbers of messages having write status in doubt visible to a cursor, comprising;
partitioning the message log into at least the first portion of the message log corresponding to the assigned sequence numbers of messages having write status in doubt and a second portion of the message log corresponding to sequence numbers of messages having write status not in doubt; and
withholding visibility of the first portion of the message log from the cursor;
an act of the computing system attempting to write the first message to the message log;
an act of the computing system indicating the success or failure of writing the first message to the message log, wherein success results in the assigned sequence number corresponding to the first message within the message log, and wherein failure results in the assigned sequence number not corresponding to any message within the message log;
an act of the computing system updating the write status of the first message to successful or failed based on the indicated success or failure of writing the first message to the message log respectively; and
an act the computing system making the second portion of the message log visible to the cursor subsequent to updating the status of the message and updating the second portion of the message log to include the assigned sequence number of the first message.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention extends to methods, systems, and computer program products for maintaining message state at a message log. Messages are accumulated at a message log in accordance with a message retention policy. Any of a variety of message capture assurances can be used when capturing a message from a message producer within a message log. A message becomes visible to message consumers after the outcome of writing the message is known (either failure or success). Messages are requested using (e.g., monotonically increasing) sequence numbers. Messages are also dropped from the message log in accordance with the message retention policy.
62 Citations
23 Claims
-
1. In a componentized messaging system including a sending computer system with a message log, a second different receiving computer system with a cursor, and a computer network, wherein the sending computer system and the receiving computer system are connected to the network, the componentized message system for delivering messages from a message producer to a message consumer, the message log for capturing messages for delivery to the message consumer, the cursor maintaining message state for the message consumer such that message consumer state is maintained separate from the sending computer system, a method for maintaining message log state, the method comprising:
-
an act of a computing system receiving a first message from the message producer that is to be stored in the message log, wherein the computing system includes one or more processor; an act of the computing system assigning a sequence number for the first message; an act of the computing system indicating in the message log that a write status of the first message is in doubt without making a first portion of the message log corresponding to assigned sequence numbers of messages having write status in doubt visible to a cursor, comprising; partitioning the message log into at least the first portion of the message log corresponding to the assigned sequence numbers of messages having write status in doubt and a second portion of the message log corresponding to sequence numbers of messages having write status not in doubt; and withholding visibility of the first portion of the message log from the cursor; an act of the computing system attempting to write the first message to the message log; an act of the computing system indicating the success or failure of writing the first message to the message log, wherein success results in the assigned sequence number corresponding to the first message within the message log, and wherein failure results in the assigned sequence number not corresponding to any message within the message log; an act of the computing system updating the write status of the first message to successful or failed based on the indicated success or failure of writing the first message to the message log respectively; and an act the computing system making the second portion of the message log visible to the cursor subsequent to updating the status of the message and updating the second portion of the message log to include the assigned sequence number of the first message. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. In a componentized messaging system including a sending computer system with a message log, a second different receiving computer system with a cursor, and a computer network, wherein the sending computer system and the receiving computer system are connected to the network, the componentized message system for delivering messages from a message producer to a message consumer, the message log for capturing messages for delivery to the message consumer, the cursor maintaining message state for the message consumer such that message consumer state is maintained separate from the sending computer system, a method for maintaining message log state, the method comprising:
-
an act of a computing system, that includes one or more processors, accumulating a plurality of messages from the message producer in the message log in accordance with a message retention policy, including; receiving a first message from the message producer that is to be stored in the message log; assigning a sequence number for the first message; indicating in the message log that a write status of the first message is in doubt without making a first portion of the message log corresponding to assigned sequence numbers of messages having write status in doubt visible to a cursor, comprising; partitioning the message log into at least the first portion of the message log corresponding to the assigned sequence numbers of messages having write status in doubt and a second portion of the message log corresponding to sequence numbers of messages having write status not in doubt; and withholding visibility of the first portion of the message log from the cursor; attempting to write the first message to the message log; indicating the success or failure of writing the first message to the message log, wherein success results in the assigned sequence number corresponding to the first message within the message log, and wherein failure results in the assigned sequence number not corresponding to any message within the message log; updating the write status of the first message to successful or failed based on the indicated success or failure of writing the first message to the message log respectively; and making the second portion of the message log visible to the cursor subsequent to updating the status of the message and updating the second portion of the message log to include the assigned sequence number of the first message; and an act of the computing system providing messages to the cursor in response to message requests, including; an act of receiving a read request for a message from the cursor, the read request including a specified sequence number within the message log, the read request being for the next message subsequent to a specified sequence number within the message log; an act of identifying the next sequence number after the specified sequence number that corresponds to a message; and an act of returning the next sequence number and the corresponding message to the cursor. - View Dependent Claims (14, 15, 16, 17, 18)
-
-
19. A componentized messaging system for delivering messages from a message producer to a message consumer, the componentized message system comprising:
-
a sending computer system, the sending computer system comprising; one or more processors; system memory; and a message log a receiving computer system, the receiving computer system comprising; one or more processors; system memory; and a cursor that is configured to maintain message state for the message consumer such that message consumer state is maintained separate from the sending computer system; a computer network, wherein the sending computer system and receiving computer are connected to the network; and wherein the sending computer system further comprises one or more computer storage devices having stored thereon computer-executable instructions for implementing a method for maintaining message log state, wherein the computer-executed instructions, when executed at one of the processors of the sending computer system, cause the sending computer system to perform the method, including performing the following; accumulate a plurality of messages from the message producer in the message log in accordance with a message retention policy, including; receiving a first message from the message producer that is to be stored in the message log; assigning a sequence number for the first message; indicating in the message log that a write status of the first message is in doubt without making a first portion of the message log corresponding to assigned sequence numbers of messages having write status in doubt visible to a cursor, comprising; partitioning the message log into at least the first portion of the message log corresponding to the assigned sequence numbers of messages having write status in doubt and a second portion of the message log corresponding to sequence numbers of messages having write status not in doubt, and withholding visibility of the first portion of the message log from the cursor; attempting to write the first message to the message log; and indicating the success or failure of writing the first message to the message log, wherein success results in the assigned sequence number corresponding to the first message within the message log, and wherein failure results in the assigned sequence number not corresponding to any message within the message log; update the write status of the first message to successful or failed based on the indicated success or failure of writing the first message to the message log respectively; and make the second portion of the message log visible to the cursor subsequent to updating the status of the message and updating the second portion of the message log to include the assigned sequence number of the first message; and provide messages to the cursor in response to message requests, including; receiving a request for a message from the cursor, the request including a specified sequence number within the message log, the request being for the next message subsequent to a specified sequence number within the message log; identifying the next sequence number after the specified sequence number that corresponds to a message; and returning the next sequence number and the corresponding message to the cursor. - View Dependent Claims (20, 21, 22, 23)
-
Specification