IP Library Granted Patent US 9,847,950
Granted Patent B1
US 9,847,950 · App. 15/460,448 · Granted Dec 19, 2017

Messaging system thread pool

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 9,847,950
App. No.
15/460,448
Granted
Dec 19, 2017
Kind
B1
Abstract

A thread pool of consumers polls existing queues. A thread manager controls the number of active threads. This approach limits the number of threads, but is still able to keep up with the volume of traffic.

Claims (46)

1. A computer implemented messaging method, comprising:

providing a multi-tenant messaging environment comprising enterprise servers having multiple producers and consumers;

providing a minimum of two threads comprising one thread manager and at least one consumer thread;

providing a plurality of queues in which there is one queue per tenant;

providing a dynamically determined thread pool of consumers that poll the queues;

assigning each tenant's thread to a queue from said thread pool; and

said thread manager controlling the number of active threads by periodically looking at all threads to determine status, wherein

when all currently existing threads are busy, the thread manager adds a thread;

when currently existing threads are not all busy, the thread manager takes no action; and

when the thread manager cycles through all threads twice and identifies a thread that does not have a message, the thread manager terminates that thread.

2. The method of claim 1 , further comprising:

said threads polling said queues in a round-robin fashion in which each consumer thread is assigned to a queue in equal portions and in circular order, by handling all threads without priority;

wherein each producer has equal access to threads in strict order without regard to message volume a producer may have.

3. The method of claim 1 , further comprising:

said thread manager dynamically maintaining thread pool size based upon a amount of traffic and a number of producers actively using the messaging environment.

4. The method of claim 1 , further comprising:

using a routing key to route a notification for an associated tenant among a plurality of tenants to one of a plurality of queues.

5. The method of claim 1 , further comprising:

when a queue has any messages, said consumer thread processing said message.

6. The method of claim 1 , further comprising:

starting a thread manager algorithm;

said thread manager waiting for a predetermined interval;

said thread manager testing to determine if all current threads are busy;

when said threads are not all busy, said thread manager waiting another predetermined interval;

when said threads are all busy, said thread manager determining if a current number of threads is less than a maximum number of threads that can be supported at any time;

when the current number of threads is not less than the maximum number of threads, said thread manager waiting another interval;

when the current number of threads is less than the maximum number of threads, said thread manager spawning a new thread.

7. The method of claim 1 , further comprising:

starting a worker thread algorithm;

starting a thread;

when a consecutive number of tries in which there is no data is less than or equal to 2*a number of queues, a queue manager getting a next queue (GetNextQueue(( ));

when the consecutive number of tries in which there is no data is less than or equal to 2*the number of queues, said queue manager determining if a number of threads is equal to one;

said thread manager ending said thread when the number of thread is not equal to one;

continuing processing when said thread manager determines that the consecutive number of tries in which there is no data is less than or equal to 2*the number of queues and the number of threads is equal to one;

when the consecutive number of tries in which there is no data is not less than or equal to 2*the number of queues, the queue manager determining if the queue has any data;

when the queue does not have any data, the queue manager determining if the consecutive number of tries in which there is no data processing continues;

when the queue has data, the queue manager determining if the consecutive number of tries in which there is no data the thread manager equals zero, and then processing the queue data.

8. The method of claim 1 , further comprising:

starting a GetNextQueue( ) algorithm;

commencing a GetNextQueue( );

setting a current queue to be equal to a current queue plus one;

when the current queue is greater than a total number of available queues, the current queue is set to one;

determining if another thread is processing in the current queue when the current queue is not greater than the total number of available queues in the system;

when another thread is processing in the current queue, setting the current queue to be equal to the current queue plus one and continuing processing;

ending processing when another thread is not processing in the current queue;

wherein said method iterates through the queue list sequentially until it gets to the ends of the queue list, at which point it restarts from the beginning of the list.

Assignments (8)
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS - REEL/FRAME 045441/ 0499 Recorded Aug 25, 2025
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
Reel/Frame 072552/0558 →
SECURITY INTEREST Recorded Aug 15, 2025
From: FLEXERA SOFTWARE LLC
To: KKR LOAN ADMINISTRATION SERVICES LLC, AS COLLATERAL GENT
Reel/Frame 072460/0828 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Apr 18, 2024
From: JEFFERIES FINANCE LLC
To: BDNA CORPORATION; FLEXERA SOFTWARE LLC; PALAMIDA, INC.; RIGHTSCALE, INC.; RISC NETWORKS, LLC; REVULYTICS, INC.
Reel/Frame 067636/0534 →
SECOND LIEN SECURITY AGREEMENT Recorded Mar 3, 2021
From: BDNA CORPORATION; FLEXERA SOFTWARE LLC; PALAMIDA, INC.; RIGHTSCALE, INC.; RISC NETWORKS, LLC; REVULYTICS, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 055487/0354 →
RELEASE OF SECOND LIEN SECURITY INTEREST Recorded Feb 28, 2020
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION; RIGHTSCALE, INC.; RISC NETWORKS, LLC
Reel/Frame 052049/0560 →
SECOND LIEN SECURITY AGREEMENT Recorded Feb 27, 2018
From: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 045451/0499 →
FIRST LIEN SECURITY AGREEMENT Recorded Feb 26, 2018
From: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 045441/0499 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 16, 2017
From: MARKEVICS, MARTIN VALDIS
To: FLEXERA SOFTWARE LLC
Reel/Frame 041601/0028 →