IP Library Granted Patent US 8,516,054
Granted Patent B2
US 8,516,054 · App. 09/993,865 · Granted Aug 20, 2013

Message handling

Inventors: William M. Cullen (Cambridge, MA); David A Chappell (Marlborough, MA)
Assignee: Aurea Software, Inc.
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 8,516,054
App. No.
09/993,865
Granted
Aug 20, 2013
Kind
B2
Abstract

The disclosure includes a description of a method of handling messages received at a messaging system server. The method includes storing, in non-persistent storage, messages received from at least one client, removing delivered messages from the non-persistent storage, and saving messages stored in the non-persistent storage to persistent storage after a delay interval.

Claims (64)

1. A method of handling a message received at a messaging system server having a processor, the method comprising:

storing at the messaging server by the processor, in non-persistent storage, the message;

determining by the processor whether the message has been delivered;

if the message has been delivered, removing by the processor the message from the non-persistent storage; and

after a configurable delay interval has elapsed and if the message has not been removed from the non-persistent storage, saving by the processor the message to persistent storage so that the message can be retrieved and delivered.

2. The method of claim 1 , wherein storing in the non-persistent storage comprises storing in a log queue.

3. The method of claim 1 , further comprising transmitting an acknowledgement message to a client that sent the received message, the acknowledgement message indicating that the received message will not be lost by the server in the case of server failure.

4. The method of claim 3 , wherein transmitting the acknowledgment message to the client comprises transmitting the acknowledgment message to the client for successful delivery of the received message.

5. The method of claim 3 , wherein transmitting the acknowledgment message to the client comprises transmitting the acknowledgment message to the client for storage of the received message in persistent storage.

6. The method of claim 1 , further comprising determining the delay interval.

7. The method of claim 6 , wherein determining the delay interval comprises:

determining at least one metric based on messages handled by the server; and

determining the delay interval based on the at least one metric.

8. The method of claim 7 , wherein the metric comprises a metric based on a number of sending clients using the server to deliver messages.

9. The method of claim 6 , wherein determining the delay interval comprises dynamically determining the delay.

10. The method of claim 1 , wherein the message was received over a communications network.

11. The method of claim 1 ,

wherein the message comprises a guaranteed message; and

wherein the messaging system comprises a message-oriented middleware system.

12. A method of handling guaranteed messages received at a message-oriented middleware server having a processor over a network, the method comprising:

storing at the message-oriented middleware server by the processor, in a log queue in non-persistent storage, guaranteed messages received from at least one client as the guaranteed messages are received;

determining by the processor whether one of the guaranteed messages has been delivered;

if the guaranteed message has been delivered, removing by the processor the message from the non-persistent storage;

dynamically determining by the processor a delay time period;

after the determined delay period has elapsed and if the message has not been removed from the non-persistent storage, saving by the processor the guaranteed messages to persistent storage so that the guaranteed messages can be retrieved and delivered; and

transmitting a guaranteed acknowledgement message to a client that sent the received guaranteed message, the guaranteed acknowledgement message indicating that the received guaranteed message will not be lost by the server.

13. The method of claim 12 , wherein transmitting the guarantee acknowledgement message comprises:

if the guaranteed message was successfully delivered, transmitting the guarantee acknowledgement message; and

if the guaranteed message was not successfully delivered, transmitting the guarantee acknowledgement message when the guaranteed message is persistently stored.

14. The method of claim 12 , wherein dynamically determining the delay time period comprises:

determining a metric based on messages handled by the server; and

determining the delay time period based on the determined metric.

15. A computer program product, disposed on a non-transitory computer readable medium, for handling messages received at a server, the computer program including instructions for causing a server processor to:

store, in non-persistent storage, messages received from at least one client as the messages are received;

determine whether one of the messages has been delivered;

if the message has been delivered, remove the message from the non-persistent storage; and

after a configurable delay interval has elapsed and if the message has not been removed from the non-persistent storage, save the message to persistent storage so that the message can be retrieved and delivered.

16. The computer program of claim 15 , wherein the instructions for causing the server processor to store messages in the non-persistent storage comprise instructions for causing the server processor to store the messages in a log queue.

17. The computer program of claim 15 , further comprising instructions for causing the server processor to transmit an acknowledgement message to a client that sent the received message, the acknowledgement message indicating that the received message will not be lost by the server.

18. The computer program of claim 17 , wherein the instructions for causing the server processor to transmit the acknowledgment message to the client comprise instructions for causing the server processor to transmit the acknowledgment message to the client for a message saved from non-persistent storage to persistent storage.

19. The computer program of claim 15 , further comprising instructions for causing the server processor to determine the delay.

20. The computer program of claim 19 , wherein the instructions for causing the server processor to determine the delay comprise instructions for causing the server processor to:

determine at least one metric based on the received messages; and

determine the delay based on the at least one metric.

21. The computer program of claim 20 , wherein the metric comprises a metric based on a number of clients using the server to deliver messages.

22. The computer program of claim 15 , wherein the instructions for causing the processor to determine the delay comprise instructions for causing the processor to dynamically determine the delay.

23. A message oriented middleware server, the server comprising:

non-persistent storage;

persistent storage;

at least one processor; and

instructions for causing the server processor to:

store, in the non-persistent storage, messages received from at least one client as the messages are received;

determine whether one of the messages has been delivered;

if the message has been delivered, remove the message from the non-persistent storage; and

after a configurable delay period has elapsed and if the message has not been removed from the non-persistent storage, save the message to persistent storage so that the message can be retrieved and delivered.

24. The server of claim 23 , wherein the instructions for causing the server processor to store the messages in the non-persistent storage comprise instructions for causing the server processor to store the messages in a log queue.

25. The server of claim 23 , further comprising instructions for causing the server processor to transmit an acknowledgment message to a client that sent the received message, the acknowledgment message indicating that the received message will not be lost by the server.

26. The server of claim 25 , wherein the server instructions for causing the server processor to transmit the acknowledgment message to the client comprise instructions for causing the server processor to transmit the acknowledgment message to the client as the message is stored from nonpersistent storage to persistent storage.

27. The server of claim 23 , further comprising instructions for causing the server processor to determine the delay.

28. The server of claim 27 , wherein the instructions for causing the server processor to determine the delay comprise instructions for causing the server processor to:

determine at least one metric based on the received messages; and

determine the delay based on the at least one metric.

29. The server of claim 28 , wherein the metric comprises a metric based on a number of clients using the server to deliver messages.

30. The server of claim 23 , wherein the instructions for causing the processor to determine the delay comprise instructions for causing the processor to dynamically determine the delay.

Assignments (5)
SECURITY INTEREST Recorded May 31, 2022
From: AUREA SOFTWARE, INC.; NEXTDOCS CORPORATION,; MESSAGEONE, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 060220/0673 →
PATENT SECURITY AGREEMENT Recorded Mar 30, 2018
From: AUREA SOFTWARE, INC.; KERIO TECHNOLOGIES INC.; NEXTDOCS CORPORATION; EXINDA INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 045789/0445 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2013
From: PROGRESS SOFTWARE CORPORATION
To: AUREA SOFTWARE, INC.
Reel/Frame 031276/0012 →
MERGER Recorded Jan 23, 2008
From: SONIC SOFTWARE CORPORATION
To: PROGRESS SOFTWARE CORPORATION
Reel/Frame 020393/0896 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2005
From: CULLEN, WILLIAM M.; CHAPPELL, DAVID A.
To: SONIC SOFTWARE CORPORATION
Reel/Frame 016904/0429 →
Continuity (2)
Provisional Application 60257313 · Dec 20, 2000
Related Publication 20020078132A1 · Jun 20, 2002