IP Library Granted Patent US 10,007,566
Granted Patent B1
US 10,007,566 · App. 14/625,679 · Granted Jun 26, 2018

Message ordering and idempotency enforcement process

Inventor: Jesse Sweetland (Pensacola, FL)
Assignee: Appriver, LLC
G06F9/546G06F9/544
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 10,007,566
App. No.
14/625,679
Granted
Jun 26, 2018
Kind
B1
Abstract

A message ordering and idempotency enforcement process utilizing at least one computing device ensures the ordered processing of asynchronously received messages and avoids reprocessing of messages that have already been successfully processed, the process receives a message identified by entity ID, message sequence number and content. The process identifies the message according to the entity ID, message sequence number and content and selects selected views of data from a view data repository applicable to the message and then inserts the message in a buffer according to message sequence number for execution of messages in message sequence order. The process then recording the last message processed according to message sequence number for an entity ID within each selected view in the view data repository.

Claims (48)

1. A message ordering and idempotency enforcement process comprising:

utilizing at least one computing device for performing the function of ensuring message ordering and idempotency;

said process further comprising:

a. a message receiving step, said process passing a message received from a message source to a view manager, said message including an entity ID and message sequence number, wherein upon receipt of said message said view manager accesses a view data repository of views, said views identified by a view ID, an entity ID and the message sequence number of the last message processed for a view;

b. a message inspection step, said process identifying the entity ID, the sequence number and message content of said message;

c. a view selection step, said process identifying and selecting which view or views said message pertains to according to the content of the message as determined by the message inspection step;

d. a dispatch step, said process sending said message from said view manager to one or more selected views in accordance with said view selection step;

e. an ordering step including a process comprising:

(i) a buffer lookup step, said process locating an existing buffer in said view data repository, said existing buffer allocated to store and control the flow of messages related by content to the entity ID and message sequence number to one or more selected views;

(ii) a view data lookup step, said process obtaining data from said view data repository in accordance with said view selection step identifying the last message processed for an entity ID within each selected view;

(iii) a buffer initialization step, said process initializing said existing buffer with the position of the next expected message according to message sequence number for each selected view;

(iv) an insertion step, said process inserting said message into the appropriate position according to said message sequence number within said existing buffer for each selected view;

f. a processing step, said process processing messages inserted in said existing buffer for each selected view in message sequence order until the buffer is empty; and

g. a recording step wherein the last message processed according to message sequence number for an entity ID within each selected view is recorded in said view data repository;

whereby said message ordering and idempotency enforcement process utilizing said at least one computing device, enforces in sequence processing of said message.

2. The ordering and idempotency process of claim 1 further including after said insertion step, a waiting step for each selected view, said process waiting until the next expected message according to said message sequence number arrives before proceeding to said processing step.

3. The ordering and idempotency process of claim 1 further including after said buffer initialization step, in the event that no existing buffer is found, a buffer creation step, said process creating a buffer for each selected view for which no existing buffer is found.

4. The ordering and idempotency process of claim 1 further including an error detection step, said process including the creation of an error message log wherein a message that causes an error is recorded in said error message log.

5. The ordering and idempotency process of claim 4 wherein the message sequence number of said error message is used as the last message processed at said recording step.

6. The ordering and idempotency process of claim 1 wherein messages pertaining to multiple views are processed independently and concurrently.

7. The ordering and idempotency process of claim 1 wherein at said insertion step, if said message sequence number is less than or equal to the last processed message sequence number in said existing buffer, the message is discarded.

8. The ordering and idempotency process of claim 1 wherein said view or views include separate buffers for messages according to message content such that said message is processed at each separate buffer independently.

9. The ordering and idempotency process of claim 1 further including a deallocation step after said recording step, said process including removing buffers which contain no waiting messages.

10. The ordering and idempotency process of claim 1 further including a timer step, said process commencing at said processing step and providing a discrete amount of time for processing a message before said processing step advances to the next expected message according to message sequence number.

11. A message ordering and idempotency enforcement process comprising:

utilizing at least one computing device for performing the function of ensuring message ordering and idempotency;

said process further comprising:

a. a message receiving step, said process passing a message received from a message source to a view manager, said message including an entity ID and message sequence number, wherein upon receipt of said message said view manager accesses a view data repository of views, said views identified by a view ID, an entity ID and the message sequence number of the last message processed for a view;

b. a message inspection step, said process identifying the entity ID, the sequence number and message content of the message;

c. a view selection step, said process identifying and selecting which view or views said message pertains to according to the content of the message as determined by the message inspection step;

d. a dispatch step, said process sending said message from said view manager to one or more selected views in accordance with said view selection step;

e. an ordering step including a process comprising:

(i) a buffer lookup step, said process locating an existing buffer in said view data repository, said existing buffer allocated to store and control the flow of messages related by content to the entity ID and message sequence number to one or more selected views;

(ii) a view data lookup step, said process obtaining data from said view data repository in accordance with said view selection step identifying the last message processed for an entity ID within each selected view;

(iii) a buffer initialization step, said process initializing said existing buffer with the position of the next expected message according to message sequence number for each selected view;

(iv) an insertion step, said process inserting the message into the appropriate position according to said message sequence number within said existing buffer for each selected view if that buffer position is empty wherein if that buffer position is not empty the message is discarded;

f. a processing step, said process processing messages inserted in said existing buffer for each selected view in message sequence order until the buffer is empty or a missing message sequence number is encountered wherein upon encountering a missing message sequence number processing stops until receipt of the next expected message according to message sequence number, and

g. a recording step wherein the last message processed according to message sequence number for an entity ID within each selected view is recorded in said view data repository;

whereby said message ordering and idempotency enforcement process utilizing said at least one computing device, enforces in sequence processing of said message.

12. The ordering and idempotency process of claim 11 further including after said insertion step, a waiting step for each selected view, said process waiting until the next expected message according to said message sequence number arrives before proceeding to said processing step.

13. The ordering and idempotency process of claim 1 further including after said buffer initialization step, in the event that no existing buffer is found, a buffer creation step, said process creating a buffer for each selected view for which no existing buffer is found.

14. The ordering and idempotency process of claim 11 further including an error detection step, said process including the creation of an error message log wherein a message that causes an error is recorded in said error message log.

15. The ordering and idempotency process of claim 14 wherein the message sequence number of said error message is used as the last message processed at said recording step.

16. The ordering and idempotency process of claim 11 wherein messages pertaining to multiple views are processed independently and concurrently.

17. The ordering and idempotency process of claim 11 wherein at said insertion step, if said message sequence number is less than or equal to the last processed message sequence number in said existing buffer, the message is discarded.

18. The ordering and idempotency process of claim 11 wherein said view or views include separate buffers for messages according to message content such that said message is processed at each separate buffer independently.

19. The ordering and idempotency process of claim 11 further including a deallocation step after said recording step, said process including removing buffers which contain no waiting messages.

20. The ordering and idempotency process of claim 11 further including a timer step, said process commencing at said processing step and providing a discrete amount of time for processing a message before said processing step advances to the next expected message according to message sequence number.

Assignments (5)
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: TRUIST BANK
To: APPRIVER, LLC
Reel/Frame 058591/0276 →
SECURITY INTEREST Recorded Mar 8, 2019
From: APPRIVER, LLC
To: SUNTRUST BANK, AS COLLATERAL AGENT
Reel/Frame 048540/0718 →
RELEASE OF SECURITY INTEREST Recorded Feb 21, 2019
From: VARAGON CAPITAL PARTNERS AGENT, LLC, AS ADMINISTRATIVE AGENT
To: AR INTERMEDIATE, LLC; AR MIDCO, LLC; APPRIVER, LLC
Reel/Frame 048391/0822 →
SECURITY INTEREST Recorded Oct 6, 2017
From: AR INTERMEDIATE, LLC; AR MIDCO, LLC; APPRIVER, LLC
To: VARAGON CAPITAL PARTNERS AGENT, LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 043804/0300 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2015
From: SWEETLAND, JESSE, MR.
To: APPRIVER, LLC
Reel/Frame 035059/0756 →
Cited By (3)
US 12,425,494 US 12,457,095 US 12,505,903