Routing provider queues
Disclosed are systems, methods, and non-transitory computer-readable media for routing provider queues. A method includes receiving a plurality of feedback data each associated with one of a plurality of routing providers, each of the plurality of feedback data indicating whether messages allocated to a corresponding routing provider were successfully delivered, determining a conversion rate for each routing provider based on corresponding feedback data, determining a congestion level for each routing provider based on a rate at which messages are dequeued from a message queue of a corresponding routing provider, and determining a performance level of each routing provider based on the corresponding conversion rate and the corresponding congestion level.
1. A method comprising:
receiving, by a processing device, a plurality of feedback data each associated with one of a plurality of routing providers, each of the plurality of feedback data indicating whether messages allocated to a corresponding routing provider were successfully delivered;
determining, by the processing device, a conversion rate for each routing provider based on corresponding feedback data;
determining, by the processing device, a congestion level for each routing provider based on a rate at which messages are dequeued from a message queue of a corresponding routing provider; and
determining, by the processing device, a performance level of each routing provider based on the corresponding conversion rate and the corresponding congestion level.
2. The method of claim 1 , further comprising:
selecting, based on a plurality of performance levels, a first routing provider from the plurality of routing providers to transmit a first message of a user to a client device of a recipient.
3. The method of claim 2 , wherein the selecting is performed at a message routing system that is coupled to each of the plurality of routing providers via a network.
4. The method of claim 3 , wherein the message routing system maintains a separate message queue of a plurality of message queues for each of the plurality of routing providers.
5. The method of claim 4 , wherein the selecting is based on a subset of the plurality of performance levels calculated using a sliding window of a rate at which messages are dequeued from each message queue.
6. The method of claim 3 , further comprising:
adding, at the message routing system, the first message into a first message queue designated to the first routing provider.
7. The method of claim 6 , further comprising:
receiving, by the message routing system and from the first routing provider, a dequeue request indicating that the first routing provider has available bandwidth exceeding a predefined threshold, to process a new message;
responsive to the dequeue request, determining, by the message routing system and based on a predefined order, that the first message is to be dequeued from the first message queue designated to the first routing provider; and
dequeuing, by the message routing system, the first message from the first message queue to the first routing provider for delivery to the client device of the recipient.
8. A system comprising:
a memory; and
a computer processor, coupled to the memory, to perform operations comprising:
receiving a plurality of feedback data each associated with one of a plurality of routing providers, each of the plurality of feedback data indicating whether messages allocated to a corresponding routing provider were successfully delivered;
determining a conversion rate for each routing provider based on corresponding feedback data;
determining a congestion level for each routing provider based on a rate at which messages are dequeued from a message queue of a corresponding routing provider; and
determining a performance level of each routing provider based on the corresponding conversion rate and the corresponding congestion level.
9. The system of claim 8 , the operations further comprising:
selecting, based on a plurality of performance levels, a first routing provider from the plurality of routing providers to transmit a first message of a user to a client device of a recipient.
10. The system of claim 9 , wherein the selecting is performed at a message routing system that is coupled to each of the plurality of routing providers via a network.
11. The system of claim 10 , wherein the message routing system maintains a separate message queue of a plurality of message queues for each of the plurality of routing providers.
12. The system of claim 11 , wherein the selecting is based on a subset of the plurality of performance levels calculated using a sliding window of a rate at which messages are dequeued from each message queue.
13. The system of claim 10 , the operations further comprising:
adding, at the message routing system, the first message into a first message queue designated to the first routing provider.
14. The system of claim 13 , the operations further comprising:
receiving, by the message routing system and from the first routing provider, a dequeue request indicating that the first routing provider has available bandwidth exceeding a predefined threshold, to process a new message;
responsive to the dequeue request, determining, by the message routing system and based on a predefined order, that the first message is to be dequeued from the first message queue designated to the first routing provider; and
dequeuing, by the message routing system, the first message from the first message queue to the first routing provider for delivery to the client device of the recipient.
15. A non-transitory computer-readable medium storing instructions that, when executed by one or more computer processors of one or more computing devices, cause the one or more computer processors to perform operations comprising:
receiving a plurality of feedback data each associated with one of a plurality of routing providers, each of the plurality of feedback data indicating whether messages allocated to a corresponding routing provider were successfully delivered;
determining a conversion rate for each routing provider based on corresponding feedback data;
determining a congestion level for each routing provider based on a rate at which messages are dequeued from a message queue of a corresponding routing provider; and
determining a performance level of each routing provider based on the corresponding conversion rate and the corresponding congestion level.
16. The non-transitory computer-readable medium of claim 15 , the operations further comprising:
selecting, based on a plurality of performance levels, a first routing provider from the plurality of routing providers to transmit a first message of a user to a client device of a recipient.
17. The non-transitory computer-readable medium of claim 16 , wherein the selecting is performed at a message routing system that is coupled to each of the plurality of routing providers via a network, and wherein the message routing system maintains a separate message queue of a plurality of message queues for each of the plurality of routing providers.
18. The non-transitory computer-readable medium of claim 17 , wherein the selecting is based on a subset of the plurality of performance levels calculated using a sliding window of a rate at which messages are dequeued from each message queue.
19. The non-transitory computer-readable medium of claim 17 , the operations further comprising:
adding, at the message routing system, the first message into a first message queue designated to the first routing provider.
20. The non-transitory computer-readable medium of claim 19 , the operations further comprising:
receiving, by the message routing system and from the first routing provider, a dequeue request indicating that the first routing provider has available bandwidth exceeding a predefined threshold, to process a new message;
responsive to the dequeue request, determining, by the message routing system and based on a predefined order, that the first message is to be dequeued from the first message queue designated to the first routing provider; and
dequeuing, by the message routing system, the first message from the first message queue to the first routing provider for delivery to the client device of the recipient.