IP Library Granted Patent US 10,951,572
Granted Patent B1
US 10,951,572 · App. 16/297,033 · Granted Mar 16, 2021

Watermark-based message queue

Inventors: Yi Cui (Palo Alto, CA); Subir Jhanb (Cupertino, CA); Thomas R. Kennedy, III (Alviso, CA)
Assignee: Google LLC
H04L51/30G06F9/546
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,951,572
App. No.
16/297,033
Granted
Mar 16, 2021
Kind
B1
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for a watermark-based message queue. One of the methods includes receiving a first connection request for messages associated with a user device. A first connection session is established with the user device. A message queue of messages associated with the user device is identified, each message in the message queue is associated with a respective timestamp, and the message queue is associated with a current watermark that identifies a first timestamp. An oldest message in the message queue at the time the first connection session was established is identified. An updated watermark that identifies a second timestamp associated with the oldest message is associated with the message queue. One or more messages that have a timestamp newer than or equal to the first timestamp identified by the current watermark is provided to the user device.

Claims (59)

1. A method comprising:

receiving, from a user device, a first connection request for messages associated with the user device;

identifying a message queue of messages associated with the user device, wherein each message in the message queue is associated with a respective timestamp;

establishing a first connection session with the user device;

identifying a current watermark that is associated with i) the message queue and ii) the first connection session, the current watermark identifying a previous timestamp of an oldest message remaining in the message queue at a start of a previous connection session preceding the first connection request, the previous connection session terminated prior to the first connection request;

providing, to the user device, one or more messages that have a timestamp newer than or equal to the previous timestamp identified by the current watermark in response to the first connection request during the first connection session;

receiving user input from the user device, the user input identifying a unit of time;

in response to receiving the user input, updating the current watermark according to the unit of time; and

deleting messages that have been in the message queue for a time period longer than or equal to unit of time associated with the current watermark.

2. The method of claim 1 , further comprising:

determining that the first connection session has terminated; and

storing data identifying one or more unacknowledged messages provided to the user device during the first connection session that did not receive acknowledgement responses.

3. The method of claim 2 , further comprising:

receiving a second connection request for messages associated with the user device and establishing a second connection session with the user device; and

providing, to the user device, the unacknowledged messages.

4. The method of claim 1 , wherein the message queue comprises a plurality of message queues, and wherein providing one or more messages to the user device comprises selecting a message from the plurality of message queues by performing a round robin process.

5. The method of claim 4 , wherein each of the message queues is specific to applications installed on the user device.

6. The method of claim 1 further comprising replicating the message queue to generate a replicated message queue comprising a replicated instance of each message of the message queue of messages.

7. A system comprising:

data processing apparatus; and

memory hardware in communication with the data processing apparatus, the memory hardware storing instructions that when executed on the data processing apparatus cause the data processing apparatus to perform operations comprising:

receiving, from a user device, a first connection request for messages associated with the user device;

identifying a message queue of messages associated with the user device, wherein each message in the message queue is associated with a respective timestamp;

establishing a first connection session with the user device;

 identifying a current watermark that is associated with i) the message queue and ii) the first connection session, the current watermark identifying a previous timestamp of an oldest message remaining in the message queue at a start of a previous connection session preceding the first connection request, the previous connection session terminated prior to the first connection request;

providing, to the user device, one or more messages that have a timestamp newer than or equal to the previous timestamp identified by the current watermark in response to the first connection request during the first connection session;

receiving user input from the user device, the user input identifying a unit of time;

in response to receiving the user input, updating the current watermark according to the unit of time; and

deleting messages that have been in the message queue for a time period longer than or equal to unit of time associated with the current watermark.

8. The system of claim 7 , wherein the operations further comprise:

receiving, from the user device, acknowledgement responses for at least one provided message; and

providing a request to delete the at least one provided message from the message queue.

9. The system of claim 7 , wherein the operations further comprise:

determining that the first connection session has terminated; and

storing data identifying one or more unacknowledged messages provided to the user device during the first connection session that did not receive acknowledgement responses.

10. The system of claim 9 , wherein the operations further comprise:

receiving a second connection request for messages associated with the user device and establishing a second connection session with the user device; and

providing, to the user device, the unacknowledged messages.

11. The system of claim 7 , wherein the message queue comprises a plurality of message queues, and wherein providing one or more messages to the user device comprises selecting a message from the plurality of message queues by performing a round robin process.

12. The system of claim 7 , wherein the operations further comprise replicating the message queue to generate a replicated message queue comprising a replicated instance of each message of the message queue of messages.

13. A computer program product, encoded on one or more non-transitory computer storage media, comprising instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:

receiving, from a user device, a first connection request for messages associated with the user device;

identifying a message queue of messages associated with the user device, wherein each message in the message queue is associated with a respective timestamp;

establishing a first connection session with the user device;

identifying a current watermark that is associated with i) the message queue and ii) the first connection session, the current watermark identifying a previous timestamp of an oldest message remaining in the message queue at a start of a previous connection session preceding the first connection request, the previous connection session terminated prior to the first connection request;

providing, to the user device, one or more messages that have a timestamp newer than or equal to the previous timestamp identified by the current watermark in response to the first connection request during the first connection session;

receiving user input from the user device, the user input identifying a unit of time;

in response to receiving the user input, updating the current watermark according to the unit of time; and

deleting messages that have been in the message queue for a time period longer than or equal to unit of time associated with the current watermark.

14. The computer program product of claim 13 , wherein the operations further comprise:

receiving, from the user device, acknowledgement responses for at least one provided message; and

providing a request to delete the at least one provided message from the message queue.

15. The computer program product of claim 13 , wherein the operations further comprise:

determining that the first connection session has terminated; and

storing data identifying one or more unacknowledged messages provided to the user device during the first connection session that did not receive acknowledgement responses.

16. The computer program product of claim 15 , wherein the operations further comprise:

receiving a second connection request for messages associated with the user device and establishing a second connection session with the user device; and

providing, to the user device, the unacknowledged messages.

17. The computer program product of claim 13 , wherein the operations further comprise replicating the message queue to generate a replicated message queue comprising a replicated instance of each message of the message queue of messages.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2019
From: CUI, YI; JHANB, SUBIR; KENNEDY, III, THOMAS R.
To: GOOGLE INC.
Reel/Frame 049032/0528 →
CHANGE OF NAME Recorded Apr 30, 2019
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 049032/0604 →
Continuity (1)
Continuation 14537075 · Nov 10, 2014