IP Library Granted Patent US 11,477,157
Granted Patent B1
US 11,477,157 · App. 17/216,608 · Granted Oct 18, 2022

Asynchronous event-based distributed messaging service

Inventors: Shaunak Mistry (Scotts Valley, CA); Phillip Wayne Peralez (Boulder, CO)
Assignee: Google LLC
H04L51/52
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 11,477,157
App. No.
17/216,608
Granted
Oct 18, 2022
Kind
B1
Abstract

When instantiating a requesting process that publishes a request for a response from a responding process, a method of implementing an event-based distributed messaging service includes identifying a response topic of a distributed messaging service and generating subscriptions for the response topic where each subscription includes a subscription identifier. During runtime for the requesting process, the method publishes a request message to a request topic subscribed to by the responding process where the request message includes a unique message identifier and generates a subscriber using a respective subscription identifier of a respective subscription selected from the subscriptions where the subscriber includes the unique message identifier. During runtime for the requesting process, the method also receives, at the subscriber, a filtered response message from the responding process where the filtered response message is filtered based on a subscription identifier associated with the subscriptions for the requesting process.

Claims (56)

1. A computer-implemented method when executed by data processing hardware causes the data processing hardware to perform operations comprising:

when instantiating a requesting process that publishes a request for a response from a responding process:

identifying a response topic of a distributed messaging service that receives the response for the request from the responding process, the responding process configured as a publisher for the response topic; and

generating a plurality of subscriptions for the response topic, each subscription comprising a subscription identifier; and

during runtime for the requesting process:

publishing a request message to a request topic subscribed to by the responding process, the request message comprising a unique message identifier;

generating a subscriber using a respective subscription identifier of a respective subscription selected from the plurality of subscriptions, the subscriber comprising the unique message identifier; and

receiving, at the subscriber, a filtered response message from the responding process in response to the request message published to the response topic, the filtered response message filtered based on one or more subscription identifiers associated with the plurality of subscriptions for the requesting process.

2. The method of claim 1 , wherein the operations further comprise, during runtime for the requesting process, randomly selecting the respective subscription from the plurality of subscriptions.

3. The method of claim 1 , wherein the operations further comprise:

when instantiating the requesting process that publishes a request for a response from the responding process, storing each subscription identifier of the plurality of subscriptions for the response topic at a hash map; and

during runtime for the requesting process, randomly selecting the respective subscription identifier from the hash map storing each subscription identifier of the plurality of subscriptions for the response topic.

4. The method of claim 1 , wherein the operations further comprise, during runtime for the requesting process, generating the request message for the request topic.

5. The method of claim 1 , wherein the operations further comprise, during runtime for the requesting process, filtering one or more messages by publishers of the request topic by:

determining whether the one or more messages by the publishers of the request topic include the unique message identifier; and

when a respective message of the one or more messages by the publishers of the request topic fails to include the unique message identifier, preventing the respective message from being received by the subscriber.

6. The method of claim 5 , wherein:

the one or more messages by the publishers of the request topic comprise the filtered response message; and

the operations, during runtime for the requesting process, further comprise, when the filtered response message includes the unique message identifier, generating an acknowledgement message.

7. The method of claim 1 , wherein:

the requesting process is instantiated in response to receiving an initial request to perform a computing task; and

the operations during runtime for the requesting process further comprise, upon receipt of the filtered response message from the responding process in response to the request message published to the request topic, generating an initial response to the initial request to perform the computing task.

8. The method of claim 1 , wherein the subscription identifier is unique among a plurality of instances of the requesting process.

9. The method of claim 1 , wherein:

the subscription identifier comprises a unique filter value; and

the filtered response message filtered based on the unique filter value of the respective subscription used to generate the subscriber.

10. The method of claim 1 , wherein each respective subscriber of a respective topic of the distributed message system functions as a multicast subscription that retrieves all messages communicated on the respective topic.

11. A system comprising:

data processing hardware; and

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

when instantiating a requesting process that publishes a request for a response from a responding process:

identifying a response topic of a distributed messaging service that receives the response for the request from the responding process, the responding process configured as a publisher for the response topic; and

generating a plurality of subscriptions for the response topic, each subscription comprising a subscription identifier; and

during runtime for the requesting process:

publishing a request message to a request topic subscribed to by the responding process, the request message comprising a unique message identifier;

generating a subscriber using a respective subscription identifier of a respective subscription selected from the plurality of subscriptions, the subscriber comprising the unique message identifier; and

receiving, at the subscriber, a filtered response message from the responding process in response to the request message published to the response topic, the filtered response message filtered based on one or more subscription identifiers associated with the plurality of subscriptions for the requesting process.

12. The system of claim 11 , wherein the operations further comprise, during runtime for the requesting process, randomly selecting the respective subscription from the plurality of subscriptions.

13. The system of claim 11 , wherein the operations further comprise:

when instantiating the requesting process that publishes a request for a response from the responding process, storing each subscription identifier of the plurality of subscriptions for the response topic at a hash map; and

during runtime for the requesting process, randomly selecting the respective subscription identifier from the hash map storing each subscription identifier of the plurality of subscriptions for the response topic.

14. The system of claim 11 , wherein the operations further comprise, during runtime for the requesting process, generating the request message for the request topic.

15. The system of claim 11 , wherein the operations further comprise, during runtime for the requesting process, filtering one or more messages by publishers of the request topic by:

determining whether the one or more messages by the publishers of the request topic include the unique message identifier; and

when a respective message of the one or more messages by the publishers of the request topic fails to include the unique message identifier, preventing the respective message from being received by the subscriber.

16. The system of claim 15 , wherein:

the one or more messages by the publishers of the request topic comprise the filtered response message; and

the operations, during runtime for the requesting process, further comprise, when the filtered response message includes the unique message identifier, generating an acknowledgement message.

17. The system of claim 11 , wherein:

the requesting process is instantiated in response to receiving an initial request to perform a computing task; and

the operations during runtime for the requesting process further comprise, upon receipt of the filtered response message from the responding process in response to the request message published to the request topic, generating an initial response to the initial request to perform the computing task.

18. The system of claim 11 , wherein the subscription identifier is unique among a plurality of instances of the requesting process.

19. The system of claim 11 , wherein:

the subscription identifier comprises a unique filter value; and

the filtered response message filtered based on the unique filter value of the respective subscription used to generate the subscriber.

20. The system of claim 11 , wherein each respective subscriber of a respective topic of the distributed message system functions as a multicast subscription that retrieves all messages communicated on the respective topic.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2021
From: MISTRY, SHAUNAK; PERALEZ, PHILLIP WAYNE
To: GOOGLE LLC
Reel/Frame 055862/0150 →