System and method for store and forward routing for distributed destinations
First Claim
Patent Images
1. A system for storing and forwarding messages to a distributed destination, comprising:
- one or more microprocessors;
a source operable to produce a plurality of messages, wherein each message is adapted to be forwarded to the distributed destination, wherein the distributed destination includes a plurality of member destinations, and each said member destination is operable to accept and process one or more messages, and wherein each said message is assigned with a unique sequence number that associates each said message with a particular member destination, wherein the unique sequence number indicates how to route said message to a particular member destination;
a source queue operable to store the plurality of messages; and
a forwarder running on the one or more microprocessors that is operable to;
consume one or more messages of the plurality of messages from the source queue;
determine, for each said message, a particular member destination from the plurality of member destinations in the distributed destination based on an evaluation of the unique sequence number assigned to the message;
deliver the one or more messages of the plurality of messages to the distributed destination exactly once;
provide ordered forwarding of sequences of multiple sub-orderings from a local destination to a remote distributed remote destination;
preserve quality of service even in an event of a subsequent restart after a system failure;
use an algorithm that yields the same persistent I/O count as algorithms that don'"'"'t preserve exactly-once or ordering;
require no significant additional implementation on the remote destinations other than a duplicate elimination algorithm; and
have no dependency on a XA transaction standard.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention enables a store-and-forward service providing an efficient and reliable forwarding of messages stored in a message queue to a distributed destination. It provides customers with high availability and scalability for applications such as JMS queues and topics. It achieves load balancing and failover amongst all individual members of the distributed destination while ensuring that each message is delivered exactly once.
-
Citations
19 Claims
-
1. A system for storing and forwarding messages to a distributed destination, comprising:
-
one or more microprocessors; a source operable to produce a plurality of messages, wherein each message is adapted to be forwarded to the distributed destination, wherein the distributed destination includes a plurality of member destinations, and each said member destination is operable to accept and process one or more messages, and wherein each said message is assigned with a unique sequence number that associates each said message with a particular member destination, wherein the unique sequence number indicates how to route said message to a particular member destination; a source queue operable to store the plurality of messages; and a forwarder running on the one or more microprocessors that is operable to; consume one or more messages of the plurality of messages from the source queue; determine, for each said message, a particular member destination from the plurality of member destinations in the distributed destination based on an evaluation of the unique sequence number assigned to the message; deliver the one or more messages of the plurality of messages to the distributed destination exactly once; provide ordered forwarding of sequences of multiple sub-orderings from a local destination to a remote distributed remote destination; preserve quality of service even in an event of a subsequent restart after a system failure; use an algorithm that yields the same persistent I/O count as algorithms that don'"'"'t preserve exactly-once or ordering; require no significant additional implementation on the remote destinations other than a duplicate elimination algorithm; and have no dependency on a XA transaction standard. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method for storing and forwarding messages to a distributed destination, comprising:
-
producing, via a source, a plurality of messages, wherein each message is adapted to be forwarded to the distributed destination, wherein the distributed destination includes a plurality of member destinations, and each said member destination is operable to accept and process one or more said messages; allowing each said message to be assigned with a unique sequence number that associated each said message with a particular member destination, wherein the unique sequence number indicates how to route said message to a particular member destination; storing, via a source queue, the plurality of messages; consuming one or more messages of the plurality of messages from the source queue; determining, for each said message, a particular member destination from the plurality of member destinations in the distributed destination based on an evaluation of the unique sequence number assigned to the message; delivering the one or more messages of the plurality of messages to the distributed destination exactly once; providing ordered forwarding of sequences of multiple sub-orderings from a local destination to a remote distributed remote destination; preserving quality of service even in an event of a subsequent restart after a system failure; using an algorithm that yields the same persistent I/O count as algorithms that don'"'"'t preserve exactly-once or ordering; requiring no significant additional implementation on the remote destinations other than a duplicate elimination algorithm; and having no dependency on a XA transaction standard. - View Dependent Claims (15, 16, 17, 18)
-
-
19. A non-transitory machine readable medium having instructions stored thereon that when executed cause a system to:
-
produce, via a source, a plurality of messages, wherein each message is adapted to be forwarded to a distributed destination, wherein the distributed destination includes a plurality of member destinations, and each said member destination is operable to accept and process one or more said messages; allow each said message to be assigned with a unique sequence number that associates each said message with a particular member destination, wherein the unique sequence number indicates how to route said message a particular member destination; store, via a source queue, the plurality of messages; consume one or more of the plurality of messages from the source queue; determine, for each said message, a particular member destination from the plurality of member destinations in the distributed destination based on an evaluation of the unique sequence number assigned to the message; deliver the one or more messages of the plurality of messages to the distributed destination exactly once; provide ordered forwarding of sequences of multiple sub-orderings from a local destination to a remote distributed remote destination; preserve quality of service even in an event of a subsequent restart after a system failure; use an algorithm that yields the same persistent I/O count as algorithms that don'"'"'t preserve exactly-once or ordering; require no significant additional implementation on the remote destinations other than a duplicate elimination algorithm; and have no dependency on a XA transaction standard.
-
Specification