IP Library Granted Patent US 11,888,754
Granted Patent B2
US 11,888,754 · App. 17/505,446 · Granted Jan 30, 2024

Techniques for transmitting messages subject to multiple rate limits

Inventor: Gregory M. Methvin (San Francisco, CA)
Assignee: ITERABLE, INC.
H04L47/62H04L49/90
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,888,754
App. No.
17/505,446
Granted
Jan 30, 2024
Kind
B2
Abstract

Techniques are disclosed for transmitting electronic messages subject to multiple rate limits. In some embodiments, a send-side rate limiter employs a sliding log or other rate limiting technique to determine whether requests to transmit messages comply with rate limits associated with those messages. When the transmission of a message does not comply with associated rate limits, a negative acknowledgment message is sent to a queuing system, causing the message to be reinserted into a queue for later transmission. In addition, delivery rate limits are established for each queue in the queuing system to throttle the delivery of messages to a send service that makes requests to transmit messages to the send-side rate limiter.

Claims (56)

1. A computer-implemented method for transmitting messages, the method comprising:

storing a first plurality of messages in a queue;

retrieving, based on a first rate limit associated with the queue, one or more messages included in the first plurality of messages from the queue;

for each message included in the one or more messages:

matching a first plurality of attributes associated with the message to a first plurality of rate limits; and

transmitting the message based on the first plurality of rate limits.

2. The computer-implemented method of claim 1 , further comprising:

determining a second plurality of rate limits associated with a second plurality of attributes associated with the first plurality of messages in the queue; and

setting the first rate limit to a smallest rate limit included in the second plurality of rate limits.

3. The computer-implemented method of claim 1 , wherein the first rate limit is set to a predefined rate limit.

4. The computer-implemented method of claim 1 , wherein transmitting the message comprises:

determining whether transmitting the message complies with the first plurality of rate limits;

if transmitting the message complies with the first plurality of rate limits, transmitting the message; and

if transmitting the message does not comply with the first plurality of rate limits, causing the message to be inserted back into the queue.

5. The computer-implemented method of claim 4 , wherein determining whether transmitting the message complies with the first plurality of rate limits comprises, for each rate limit included in the first plurality of rate limits, acquiring a permit based on a number of previous messages associated with the first rate limit that have been transmitted during a predefined period of time.

6. The computer-implemented method of claim 1 , wherein the first plurality of attributes comprises at least one of a data feed that provides information to include in the message, a type of the message, a customer quota associated with the message, or a message campaign that includes the message.

7. The computer-implemented method of claim 1 , further comprising:

storing a second plurality of messages in another queue;

retrieving one or more additional messages from the other queue based on a second rate limit associated with the other queue; and

transmitting the one or more additional messages based on second plurality of rate limits.

8. The computer-implemented method of claim 7 , wherein the first plurality of rate limits and the second plurality of rate limits include at least one same rate limit.

9. The computer-implemented method of claim 1 , wherein the first rate limit is implemented via a queuing system and the first plurality of rate limits are implemented via a script.

10. One or more non-transitory computer-readable storage media including instructions that, when executed by at least one processor, cause the at least one processor to perform steps for transmitting messages, the steps comprising:

storing a plurality of messages in a queue;

retrieving, based on a first rate limit associated with the queue, one or more messages included in the plurality of messages from the queue;

for each message included in the one or more messages:

matching a first plurality of attributes associated with the message to a first plurality of rate limits; and

transmitting the message based on the first plurality of rate limits.

11. The one or more non-transitory computer-readable storage media of claim 10 , wherein the steps further comprise:

determining a second plurality of rate limits associated with a second plurality of attributes associated with the plurality of messages in the queue; and

setting the first rate limit to a smallest rate limit included in the second plurality of rate limits.

12. The one or more non-transitory computer-readable storage media of claim 10 , wherein the first rate limit is set to a predefined rate limit.

13. The one or more non-transitory computer-readable storage media of claim 10 , wherein transmitting the message comprises:

determining whether transmitting the message complies with the first plurality of rate limits;

if transmitting the message complies with the first plurality of rate limits, transmitting the message; and

if transmitting the message does not comply with the first plurality of rate limits, causing the message to be inserted back into the queue.

14. The one or more non-transitory computer-readable storage media of claim 13 , wherein determining whether transmitting the message complies with the first plurality of rate limits comprises, for each rate limit included in the first plurality of rate limits, acquiring a permit based on a number of previous messages associated with the first rate limit that have been transmitted during a predefined period of time.

15. The one or more non-transitory computer-readable storage media of claim 10 , wherein the first plurality of rate limits include at least one of a rate limit associated with a data feed that provides information to include in the message, a rate limit associated with a type of the one or more messages, a rate limit associated with a customer quota, or a rate limit associated with a message campaign.

16. The one or more non-transitory computer-readable storage media of claim 10 , wherein the instructions, when executed by at the least one processor, further cause the at least one processor to perform steps comprising:

storing a second plurality of messages in another queue;

retrieving one or more additional messages from the other queue based on a second rate limit associated with the other queue; and

transmitting the one or more additional messages based on second plurality of rate limits.

17. The one or more non-transitory computer-readable storage media of claim 10 , wherein the one or more messages are transmitted as one or more emails, text messages, in-application notifications, push notifications, or web push notifications.

18. The one or more non-transitory computer-readable storage media of claim 10 , wherein the instructions, when executed by the at least one processor, further cause the at least one processor to perform steps comprising:

updating at least one of the first rate limit associated with the queue or the first plurality of rate limits.

19. A system, comprising:

one or more memories storing instructions; and

one or more processors that are coupled to the one or more memories and, when executing the instructions, are configured to:

store a plurality of messages in a queue,

retrieve, based on a first rate limit associated with the queue, one or more messages included in the plurality of messages from the queue,

for each message included in the one or more messages:

match a first plurality of attributes associated with the message to a first plurality of rate limits; and

transmit the message based on the first plurality of rate limits.

20. The system of claim 19 , wherein, when executing the instructions, the one or more processors are further configured to:

determine a second plurality of rate limits associated with a second plurality of attributes associated with the plurality of messages in the queue; and

set the first rate limit to a smallest rate limit included in the second plurality of rate limits.

Assignments (3)
SECURITY INTEREST Recorded Jun 10, 2024
From: ITERABLE, INC.
To: CUSTOMERS BANK
Reel/Frame 067671/0978 →
SECURITY INTEREST Recorded Oct 27, 2022
From: ITERABLE, INC.
To: SIGNATURE BANK
Reel/Frame 061563/0459 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2021
From: METHVIN, GREGORY M.
To: ITERABLE, INC.
Reel/Frame 057839/0286 →
Continuity (1)
Related Publication 20230123232A1 · Apr 20, 2023