×

Durable exactly once message delivery at scale

  • US 8,200,836 B2
  • Filed: 09/29/2008
  • Issued: 06/12/2012
  • Est. Priority Date: 11/16/2007
  • Status: Expired due to Fees
First Claim
Patent Images

1. A componentized messaging system providing end to end durable exactly once message delivery, the componentized messaging system comprising:

  • a message capture system, including;

    a message producer;

    a capture side durable resource manager;

    a capture side transaction coordinatora message log;

    wherein the message producer is configured to initiate a capture transaction for transferring a message to the message log, including;

    synchronously sending a capture transaction ID to the message log; and

    instructing the capture side durable resource manager and the message log to contact a sending side transaction coordinator to enlist in a transaction corresponding to the capture transaction ID, a transaction for coordinating the updates to a sending-side durable resource manager and the capture of the message to the message log; and

    wherein the message log is configured to participate in the transaction for coordinating the updates to the sending-side durable resource manager and capture of a message to the message log, including;

    synchronously receiving the capture transaction ID from the message producer;

    enlisting in the transaction corresponding to the capture transaction ID at the sending side transaction coordinator, the transaction for coordinating the updates in the sending side durable resource manager and capture of the message to the message log;

    receiving the message;

    storing the message in durable storage at the message log; and

    receiving a subsequent indication from the transaction coordinator as to whether to commit or rollback the storing of the message in the durable storea message delivery system, including;

    a message consumer;

    a delivery side durable resource manager;

    a delivery side transaction coordinatora cursor;

    wherein the message consumer is configured to initiate a delivery transaction for transferring the message to the message consumer, including;

    receiving the message from the cursor;

    creating a transaction to atomically coordinate updates to the delivery side durable resource manager and the cursor;

    instructing the delivery side durable resource manager to contact a receiving side transaction coordinator to enlist in the transaction corresponding to a delivery transaction ID;

    processing the message to produce updates to the delivery side durable resource manager;

    synchronously sending a delete request with the delivery transaction ID to the cursor; and

    instructing the cursor to contact the receiving side transaction coordinator to enlist in the transaction corresponding to the delivery transaction ID, a transaction for completing the transaction to atomically coordinate a message delete from the cursor and the message processing update to the delivery side durable resource manager;

    wherein the cursor is configured to participate in a transaction for transferring a message from the cursor to the message consumer, including;

    synchronously receiving the delivery transaction ID from the message consumer;

    enlisting in the transaction corresponding to the delivery transaction ID at the delivery side transaction coordinator, the transaction for atomically coordinating the message delete from the cursor and the message processing update to the delivery side durable resource manager; and

    receiving an outcome notification from the delivery side transaction coordinator indicating whether to commit the delete of the message or rollback the delete of the message; and

    a network;

    wherein the message log and the cursor participate in a transfer protocol across the network to transfer the message from the message log to the cursor, the transfer protocol providing at least once message assurance, the transfer protocol including;

    the message log sending the message to the cursor over the network;

    the message log starting a timer for the message;

    the message log resending the message if the message log fails to receive an acknowledgment of the message receipt from the cursor prior to expiration of the timer;

    the cursor receiving the message;

    the cursor sending an acknowledgement to the message log, the acknowledgement acknowledging receipt of the message; and

    the message log deleting the message in response to the acknowledgement.

View all claims
  • 2 Assignments
Timeline View
Assignment View
    ×
    ×