IP Library Granted Patent US 8,954,994
Granted Patent B2
US 8,954,994 · App. 12/107,597 · Granted Feb 10, 2015

System and method for message service with unit-of-order

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,954,994
App. No.
12/107,597
Granted
Feb 10, 2015
Kind
B2
Abstract

The present invention enables “unit-of-order”, which allows a message producer to group messages into a single unit. It guarantees that messages are not only delivered to consumers in order, they are also are processed in order. The unit-of-order will be delivered to consumers as one unit and only one consumer will process messages from the unit at a time. The processing of a single message is complete when it is acknowledged, committed, recovered, or rolled back. Until message processing for a message is complete, the remaining unprocessed messages for that unit-of-order are blocked.

Claims (47)

1. A system to provide a messaging service, comprising:

one or more microprocessors;

a unit-of-order that groups together a plurality of messages created in an order by a producer, wherein the unit-of-order is associated with a name; and

a distributed queue on a destination running on the one or more microprocessors,

wherein the distributed queue includes a plurality of distributed queue members, and receives the plurality of messages as a unit on a single distributed queue member,

wherein when one of the plurality of messages is determined to be uncommitted, other uncommitted messages in the plurality of messages are delivered to a same transaction as the uncommitted message, so that all the uncommitted messages in the plurality of messages are maintained in a single recoverable operation upon a rollback,

wherein the single distributed queue member is mapped to the name of the unit-of-order via a path service, and

wherein the plurality of messages in the unit-of-order maintain the order that said messages were created, and are adapted to be processed by a consumer of the distributed queue sequentially in that order.

2. The system according to claim 1 , further comprising:

a database configured to store a processing result of the plurality of messages in the unit-of-order.

3. The system according to claim 1 , wherein the messaging service is objected oriented.

4. The system according to claim 1 , wherein each of the producer and the consumer is a software component.

5. The system according to claim 4 , wherein the consumer is a Message Driven Bean (MDB).

6. The system according to claim 1 , wherein the plurality of messages in the unit-of-order is created either programmatically or administratively.

7. The system according to claim 1 , wherein the plurality of messages in the unit-of-order are processed one at a time.

8. The system according to claim 7 , wherein each of the plurality of messages in the unit-of-order is completely processed when it is acknowledged, committed, recovered, or rolled back.

9. The system according to claim 7 , wherein each unprocessed message in the unit-of-order is blocked until the message being processed is complete.

10. The system according to claim 1 , wherein the distributed queue on the destination further includes another plurality of messages in another unit-of-order, wherein each unit-of-order is adaptive to be processed in a different transaction respectively.

11. The system according to claim 1 , wherein the plurality of messages in the unit-of-order are processed in parallel by different subscribers of a same topic, wherein each subscriber processes the plurality of messages in a different order.

12. The system according to claim 1 , wherein the consumer operates to complete processing the plurality of messages in the unit-of-order before sending another message to the consumer.

13. A method to provide a message service, comprising:

creating, via a producer, a plurality of messages in an order, wherein the plurality of messages are grouped together as a unit-of-order, wherein the unit-of-order is associated with a name; and

delivering the plurality of messages to a distributed queue on a destination as a unit,

wherein the distributed queue, running on one or more microprocessors, includes a plurality of distributed queue members, and receives the plurality of messages on a single distributed queue member,

wherein the single distributed queue member is mapped to the name of the unit-of-order via a path service,

wherein when one of the plurality of messages is determined to be uncommitted, other uncommitted messages in the plurality of messages are delivered to a same transaction as the uncommitted message, so that all the uncommitted messages in the plurality of messages are maintained in a single recoverable operation upon a rollback, and

wherein the plurality of messages in the unit-of-order maintain the order that said messages were created, and are adapted to be processed by a consumer sequentially in that order.

14. The method according to claim 13 , further comprising at least one of:

creating the plurality of messages in the unit-of-order either programmatically or administratively, and

storing a processing result of the plurality of messages in the unit-of-order in a database.

15. The method according to claim 13 , further comprising:

processing the plurality of messages in the unit-of-order one at a time.

16. The method according to claim 15 , further comprising:

blocking each unprocessed message in the unit-of-order until the message being processed is complete.

17. A non-transitory machine readable storage medium having instructions stored thereon that when executed cause a system to perform the steps comprising:

creating, via a producer, a plurality of messages in an order, wherein the plurality of messages are grouped together as a unit-of-order, wherein the unit-of-order is associated with a name; and

delivering the plurality of messages to a distributed queue on a destination as a unit,

wherein the distributed queue, running on one or more microprocessors, includes a plurality of distributed queue members, and receives the plurality of messages on a single distributed queue member,

wherein the single distributed queue member is mapped to the name of the unit-of-order via a path service,

wherein when one of the plurality of messages is determined to be uncommitted, other uncommitted messages in the plurality of messages are delivered to a same transaction as the uncommitted message, so that all the uncommitted messages in the plurality of messages are maintained in a single recoverable operation upon a rollback, and

wherein the plurality of messages in the unit-of-order maintain the order that said messages were created, and are adapted to be processed by a consumer sequentially in that order.

18. The non-transitory machine readable storage medium according to claim 17 , further comprising at least one of:

creating the plurality of messages in the unit-of-order either programmatically or administratively.

19. The non-transitory machine readable storage medium according to claim 17 , further comprising:

processing the plurality of messages in the unit-of-order one at a time.

20. The non-transitory machine readable storage medium according to claim 19 , further comprising:

blocking each unprocessed message in the unit-of-order until the message being processed is complete.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2010
From: BEA SYSTEMS, INC.
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 025192/0244 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2008
From: GAMBINO, SALVATORE ANTHONY
To: BEA SYSTEMS, INC.
Reel/Frame 020849/0356 →