# US 10,313,295 B2 · Scalable messaging system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,313,295 B2
- Document ID: US10313295B2
- Status: Granted
- Kind: B2
- Application number: 15/382,431
- Filed: 2016-12-16
- Published: 2018-06-21
- Granted: 2019-06-04
- Earliest claimed: 2016-12-16
- Assignees: DreamWorks Animation LLC
- Applicants: DreamWorks Animation LLC
- Inventors: Douglas E. Sherman; Justin Tang
- Web page: https://patentgrep.com/patent/US10313295B2

## CPC

- H04L 51/52: for supporting social networking services
- H04L 45/302: Route determination based on requested QoS
- H04L 51/046: Interoperability with other network applications or services
- H04L 51/066: Format adaptation, e.g. format conversion or compression
- H04L 51/214: using selective forwarding
- H04L 51/226: Delivery according to priorities
- H04L 51/56: Unified messaging, e.g. interactions between e-mail, instant messaging or converged IP messaging [CPM]
- H04L 67/1014: based on the content of a request
- H04L 67/567: Integrating service provisioning from a plurality of service providers
- H04L 67/61: taking into account QoS or priority requirements
- H04L 12/1859: {adapted to provide push services, e.g. data channels}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system and method provides a computer-implemented messaging service. Users subscribe to message channels. A message queue buffers messages to a router. The router determines whether characteristics of a first message match criteria specified in subscription requests, and may route the first message to one or more sending agents based on modes of communication specified in the subscription service requests. The sending agent(s) generate a second message formatted for the specified modes of communication based on the first message. Message load balancing, message queuing, message routing, and message sending services may all be independently scaled to adjust for demand.

## Claims

### Claim 1

A computer-implemented method for a messaging service, the method comprising:
receiving a first message subscription service request at a router, the first message subscription service request including message criteria;
receiving a second message subscription service request at the router, the second message subscription service request including the message criteria;
determining a first sending agent based on the first message subscription service request;
determining a second sending agent based on the second message subscription service request, wherein the first sending agent and the second sending agent are associated with different respective modes of communication;
receiving a first message at the router, the first message including a message parameter and message content;
determining whether the message criteria match the message parameter; and
in response to a determination that the message criteria match the message parameter:
routing the first message to the determined first sending agent;
generating a second message at the first sending agent based on the first message and the first message subscription service request, wherein the second message includes the message content;
routing the first message to the determined second sending agent; and
generating a third message at the second sending agent based on the first message and the second message subscription service request, wherein the third message includes the message content, and wherein the second message and the third message are sent via different modes of communication.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein determining the first sending agent includes determining the first sending agent from a plurality of sending agents, wherein the first sending agent is at least one of an email-generating sending agent, a text-generating sending agent, a websocket-generating sending agent, and a webhook-generating sending agent, and
wherein determining the second sending agent includes determining the second sending agent from the plurality of sending agents, wherein the second sending agent is at least one of an email-generating sending agent, a text-generating sending agent, a websocket-generating sending agent, and a webhook-generating sending agent.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, further comprising:
receiving a third message subscription service request at the router, the third message subscription service request including second message criteria;
receiving a fourth message at the router, the fourth message including a second message parameter;
determining whether the second message criteria match the second message parameter; and
in response to a determination that the second message criteria match the second message parameter:
routing the fourth message to the sending agent; and
generating a fifth message at the sending agent based on the fourth message and the second message subscription service request.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, further comprising:
routing the first message to a persistent store including a distributed database management system; and
saving the first message in the persistent store.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, further comprising:
receiving a request for the first message stored in the persistent store;
retrieving the first message from the persistent store; and
sending the first message to a message persistence service based on the request.

### Claim 6 (depends on 4)

The computer-implemented method of claim 4, wherein routing the first message to the persistent store is based on determining that the message criteria match the message parameter.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the first message is received from a message sender service.

### Claim 8 (depends on 7)

The computer-implemented method of claim 7, further comprising:
detecting increased traffic at the message sender service; and
generating a second instance of the message sender service.

### Claim 9 (depends on 7)

The computer-implemented method of claim 7, further comprising:
buffering the first message at a message queue before sending to the router.

### Claim 10 (depends on 7)

The computer-implemented method of claim 7, further comprising:
detecting increased traffic at the message queue; and
generating a second instance of the message queue.

### Claim 11 (depends on 1)

The computer-implemented method of claim 1, further comprising:
receiving a sixth message at the router, wherein the order of receipt of the first and sixth messages at the router is determined by a Representational State Transfer (REST) proxy load balancer.

### Claim 12 (depends on 1)

The computer-implemented method of claim 1, wherein the message parameter includes at least one of a channel identifier, a sender identifier, an event identifier, a message type, a message tag, a message address, and message content.

### Claim 13 (depends on 1)

The computer-implemented method of claim 1, further comprising:
filtering messages between the router and at least one of the sending agents based on entitlements.

### Claim 14 (depends on 13)

The computer-implemented method of claim 13, wherein the entitlements are entries in a database that correlate a user with specific message parameter permissions.

### Claim 15 (depends on 1)

The computer-implemented method of claim 1, further comprising:
evaluating the message subscription service request based on entitlements, and
rejecting the message subscription service request before generating a message subscription if the message subscription service request fails the evaluation.

### Claim 16 (depends on 1)

The computer-implemented method of claim 1, wherein generating the third message comprises converting the first message having the message content into the third message having the message content, wherein the third message is in a different message format than the first message.

### Claim 17

A non-transitory computer-readable storage medium for providing a messaging service, the non-transitory computer-readable storage medium comprising computer-executable instructions for:
receiving a first message subscription service request at a router, the first message subscription service request including message criteria;
receiving a second message subscription service request at the router, the second message subscription service request including the message criteria;
determining a first sending agent based on the first message subscription service request;
determining a second sending agent based on the second message subscription service request, wherein the first sending agent and the second sending agent are associated with different respective modes of communication;
receiving a first message at the router, the first message including a message parameter and message content;
determining whether the message criteria match the message parameter; and
in response to a determination that the message criteria match the message parameter:
routing the first message to the determined first sending agent;
generating a second message at the first sending agent based on the first message and the first message subscription service request, wherein the second message includes the message content;
routing the first message to the determined second sending agent; and
generating a third message at the second sending agent based on the first message and the second message subscription service request, wherein the third message includes the message content, and wherein the second message and the third message are sent via different modes of communication.

### Claim 18 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, wherein determining the first sending agent includes determining the first sending agent from a plurality of sending agents, wherein the first sending agent is at least one of an email-generating sending agent, a text-generating sending agent, a websocket-generating sending agent, and a webhook-generating sending agent, and
wherein determining the second sending, agent includes determining the second sending agent from the plurality of sending agents, wherein the second sending agent is at least one of an email-generating sending agent, a text-generating sending agent, a websocket-generating sending agent, and a webhook-generating sending agent.

### Claim 19 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, further comprising computer-executable instructions for:
receiving a third message subscription service request at the router, the third message subscription service request including second message criteria;
receiving a fourth message at the router, the fourth message including a second message parameter;
determining whether the second message criteria match the second message parameter; and
in response to a determination that the second message criteria match the second message parameter:
routing the fourth message to the sending agent; and
generating a fifth message at the sending agent based on the fourth message and the second message subscription service request.

### Claim 20 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, further comprising computer-executable instructions for:
routing the first message to a persistent store including a distributed database management system; and
saving the first message in the persistent store.

### Claim 21 (depends on 20)

The non-transitory computer-readable storage medium of claim 20, further comprising computer-executable instructions for:
receiving a request for the first message stored in the persistent store;
retrieving the first message from the persistent store; and
sending the first message to a message persistence service based on the request.

### Claim 22 (depends on 20)

The non-transitory computer-readable storage medium of claim 20, wherein routing the first message to the persistent store is based on determining that the message criteria match the message parameter.

### Claim 23 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, wherein the first message is received from a message sender service.

### Claim 24 (depends on 23)

The non-transitory computer-readable storage medium of claim 23, further comprising computer-executable instructions for:
detecting increased traffic at the message sender service; and
generating a second instance of the message sender service.

### Claim 25 (depends on 23)

The non-transitory computer-readable storage medium of claim 23, further comprising computer-executable instructions for:
buffering the first message at a message queue before sending to the router.

### Claim 26 (depends on 23)

The non-transitory computer-readable storage medium of claim 23, further comprising computer-executable instructions for:
detecting increased traffic at the message queue; and
generating a second instance of the message queue.

### Claim 27 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, further comprising computer-executable instructions for:
receiving a sixth message at the router, wherein the order of receipt of the first and sixth messages at the router is determined by a Representational State Transfer (REST) proxy load balancer.

### Claim 28 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, wherein the message parameter includes at least one of a channel identifier, a sender identifier, an event identifier, a message type, a message tag, a message address, and message content.

### Claim 29 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, further comprising computer-executable instructions for:
filtering messages between the router and at least one of the sending agents based on entitlements.

### Claim 30 (depends on 29)

The non-transitory computer-readable storage medium of claim 29, wherein the entitlements are entries in a database that correlate a user with specific message parameter permissions.

### Claim 31 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, further comprising computer-executable instructions for:
evaluating the message subscription service request based on entitlements, and
rejecting the message subscription service request before generating a message subscription if the message subscription service request fails the evaluation.

### Claim 32 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, wherein generating the third message comprises converting the first message having the message content into the third message having the message content, wherein the third message is in a different message format than the first message.

### Claim 33

A system for a messaging service, the system comprising:
a memory; and
one or more processors coupled to the memory and configured to:
receive a first message subscription service request at a router, the first message subscription service request including message criteria;
receive a second message subscription service request at the router, the second message subscription service request including the message criteria;
determine a first sending agent based on the first message subscription service request;
determine a second sending agent based on the second message subscription service request, wherein the first sending agent and the second sending agent are associated with different respective modes of communication;
receive a first message at the router, the first message including a message parameter and message content;
determine whether the message criteria match the message parameter; and
in response to a determination that the message criteria match the message parameter:
route the first message to the determined first sending agent;
generate a second message at the first sending agent based on the first message and the first message subscription service request, wherein the second message includes the message content;
route the first message to the determined second sending agent; and
generate a third message at the second sending agent based on the first message and the second message subscription service request, wherein the third message includes the message content and wherein the second message and the third message are sent via different modes of communication.

### Claim 34 (depends on 33)

The system of claim 33, wherein determining the first sending agent includes determining the first sending agent from a plurality of sending agents, wherein the first sending agent is at least one of an email-generating sending agent, a text-generating sending agent, a websocket-generating sending agent, and a webhook-generating sending agent, and
wherein determining the second sending agent includes determining the second sending agent from the plurality of sending agents, wherein the second sending agent is at least one of an email-generating sending agent, a text-generating sending agent, a websocket-generating sending agent, and a webhook-generating sending agent.

### Claim 35 (depends on 33)

The system of claim 33, wherein the one or more processors are configured to:
receive a third message subscription service request at the router, the third message subscription service request including second message criteria;
receive a fourth message at the router, the fourth message including a second message parameter;
determine whether the second message criteria match the second message parameter; and
in response to a determination that the second message criteria match the second message parameter:
route the fourth message to the sending agent; and
generate a fifth message at the sending agent based on the fourth message and the second message subscription service request.

### Claim 36 (depends on 33)

The system of claim 33, wherein the one or more processors are configured to:
route the first message to a persistent store including a distributed database management system; and
save the first message in the persistent store.

### Claim 37 (depends on 36)

The system of claim 36, wherein the one or more processors are configured to:
receive a request for the first message stored in the persistent store;
retrieve the first message from the persistent store; and
send the first message to a message persistence service based on the request.

### Claim 38 (depends on 36)

The system of claim 36, wherein routing the first message to the persistent store is based on determining that the message criteria match the message parameter.

### Claim 39 (depends on 33)

The system of claim 33, wherein the first message is received from a message sender service.

### Claim 40 (depends on 39)

The system of claim 39, wherein the one or more processors are configured to:
detect increased traffic at the message sender service; and
generate a second instance of the message sender service.

### Claim 41 (depends on 39)

The system of claim 39, wherein the one or more processors are configured to:
buffer the first message at a message queue before sending to the router.

### Claim 42 (depends on 39)

The system of claim 39, wherein the one or more processors are configured to:
detect increased traffic at the message queue; and
generate a second instance of the message queue.

### Claim 43 (depends on 33)

The system of claim 33, wherein the one or more processors are configured to:
receive a sixth message at the router, wherein the order of receipt of the first and sixth messages at the router is determined by a Representational State Transfer (REST) proxy load balancer.

### Claim 44 (depends on 33)

The system of claim 33, wherein the message parameter includes at least one of a channel identifier, a sender identifier, an event identifier, a message type, a message tag, a message address, and message content.

### Claim 45 (depends on 33)

The system of claim 33, wherein the one or more processors are configured to:
filter messages between the router and at least one of the sending agents based on entitlements.

### Claim 46 (depends on 45)

The system of claim 45, wherein the entitlements are entries in a database that correlate a user with specific message parameter permissions.

### Claim 47 (depends on 33)

The system of claim 33, wherein the one or more processors are configured to:
evaluate the message subscription service request based on entitlements, and
reject the message subscription service request before generating a message subscription if the message subscription service request fails the evaluation.

### Claim 48 (depends on 33)

The system of claim 33, wherein generating the third message comprises converting the first message having the message content into the third message having the message content, wherein the third message is in a different message format than the first message.
