Methods, systems and computer program products for synchronization of queue-to-queue communications
First Claim
1. A method of communicating between a source device and a destination device over an external communication link utilizing a queue-to-queue transfer system, the method comprising:
- transmitting messages stored in a source persistent queue at the source device over the external communication link to the destination device, wherein the transmitted messages have transmitted with them an associated sequence identifier which identifies the message stored in the source persistent queue and wherein the source persistent queue maintains the messages to be transmitted and associated sequence identifiers between execution of instances of the queue-to-queue transfer system by the source device;
receiving the transmitted messages and the associated sequence identifiers at the destination device in an order other than an order of the sequence identifiers of the messages and storing the received message and the associated sequence identifier in a destination persistent queue at the destination device and wherein the destination persistent queue maintains the received message and associated sequence identifier between execution of instances of the queue-to-queue transfer system by the destination device;
transmitting to the source device from the destination device a commit message, wherein the commit message identifies a largest sequence identifier of consecutive sequence identifiers associated with received messages of a sequence of messages which have been persistently stored in the destination persistent queue; and
making the persistently stored message in the destination persistent queue available to users of the destination device independent of whether a commit message identifying the message has been transmitted to the source device.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods, systems, and computer program products are provided for communicating between a source device and a destination device over an external communication link by transmitting a message stored in a source persistent queue at the source device over the external communication link to the destination device. The transmitted message has transmitted with it an associated sequence identifier which identifies the message stored in the source persistent queue. The transmitted message and the associated sequence identifier are received at the destination device and stored in a destination persistent queue at the destination device. Occasionally, a commit message is transmitted to the source device from the destination device which identifies a sequence identifier associated with received message which has been persistently stored in the destination persistent queue. The persistently stored message in the destination persistent queue is made available to users of the destination device independent of whether a commit message identifying the message has been transmitted to the source device.
124 Citations
33 Claims
-
1. A method of communicating between a source device and a destination device over an external communication link utilizing a queue-to-queue transfer system, the method comprising:
-
transmitting messages stored in a source persistent queue at the source device over the external communication link to the destination device, wherein the transmitted messages have transmitted with them an associated sequence identifier which identifies the message stored in the source persistent queue and wherein the source persistent queue maintains the messages to be transmitted and associated sequence identifiers between execution of instances of the queue-to-queue transfer system by the source device;
receiving the transmitted messages and the associated sequence identifiers at the destination device in an order other than an order of the sequence identifiers of the messages and storing the received message and the associated sequence identifier in a destination persistent queue at the destination device and wherein the destination persistent queue maintains the received message and associated sequence identifier between execution of instances of the queue-to-queue transfer system by the destination device;
transmitting to the source device from the destination device a commit message, wherein the commit message identifies a largest sequence identifier of consecutive sequence identifiers associated with received messages of a sequence of messages which have been persistently stored in the destination persistent queue; and
making the persistently stored message in the destination persistent queue available to users of the destination device independent of whether a commit message identifying the message has been transmitted to the source device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
receiving at the source device a commit message from the destination device, wherein the commit message specifies a sequence identifier of a message; and
thendiscarding from the source persistent queue, messages having associated sequence identifiers which are not greater than the sequence identifier of the commit message.
-
-
3. A method according to claim 2, wherein a plurality of commit messages are received at the source device and where said discarding step comprises discarding from the source persistent queue messages having associated sequence identifiers which are not greater than a largest sequence identifier of the sequence identifiers of the plurality of received commit messages.
-
4. A method according to claim 1, further comprising the steps of:
-
determining if a new connection between the source device and the destination device has been established;
responsive to determining if a new connection has been established, transmitting a resync message from the destination device to the source device, wherein the resync message identifies a largest sequence identifier of consecutive sequence identifiers associated with received messages of a sequence of messages which have been persistently stored in the destination persistent queue.
-
-
5. A method according claim 4, further comprising the steps of:
-
determining a message stored in the source persistent queue having an associated sequence identifier which is a next greater sequence identifier than the sequence identifier received from the destination device responsive to determining if a new connection has been established; and
beginning transmission of messages stored in the source persistent queue to the destination device from the determined message stored in the source persistent queue having an associated sequence identifier which is a next greater sequence identifier than the sequence identifier received from the destination device.
-
-
6. A method according to claim 5, further comprising the step of discarding messages from the source persistent queue having an associated sequence identifier which is not greater than the highest sequence identifier received from the destination device.
-
7. A method according to claim 1, further comprising the steps of:
-
receiving a request from a user application of the destination device for a message received from the source device;
determining if a received message and an associated sequence identifier stored in the destination persistent queue at the destination device has an associated sequence identifier which is not greater than a highest sequence identifier associated with a persistently stored message; and
providing, to the requesting user application, a message stored in the destination persistent queue with the smallest sequence identifier if a received message and an associated sequence identifier is stored in the destination persistent queue at the destination device has an associated sequence identifier which is not greater than a highest sequence identifier associated with a persistently stored message.
-
-
8. The method of claim 7, wherein the highest sequence number associated with a persistently stored message comprises a highest sequence number of persistently stored messages having continuous sequence numbers in the sequence number order irrespective of whether a persistently stored message has a higher sequence number which is discontinuous from the persistently stored messages having continuous sequence numbers.
-
9. A method of communicating between a source device and a destination device over an external communication link, the method comprising:
-
transmitting a message stored in a source persistent queue at the source device over the external communication link to the destination device, wherein the transmitted message has transmitted with it an associated sequence identifier which identifies the message stored in the source persistent queue;
receiving the transmitted message and the associated sequence identifier at the destination device and storing the received message and the associated sequence identifier in a destination persistent queue at the destination device;
transmitting to the source device from the destination device a commit message, wherein the commit message identifies a largest sequence identifier of consecutive sequence identifiers associated with received messages of a sequence of messages which have been persistently stored in the destination persistent queue;
making the persistently stored message in the destination persistent queue available to users of the destination device independent of whether a commit message identifying the message has been transmitted to the source device;
transmitting a resync message from the source device to the destination device; and
responsive to receiving a resync message, transmitting to the source device from the destination device a commit message, wherein the commit message identifiers a largest sequence identifier associated with a last received message of a sequence of messages which has been persistently stored in the destination persistent queue. - View Dependent Claims (10, 11)
wherein the step of transmitting a resync message comprises transmitting a resync message from the source device to the destination device responsive to the determination of whether the source persistent queue has reached a fill threshold.
-
-
11. The method of claim 9, wherein the step of transmitting a resync message is performed responsive to determining that a connection has been reestablished between the source device and the destination device.
-
12. A system for communicating between a source device and a destination device over an external communication link utilizing a queue-to-queue transfer system, comprising:
-
means for transmitting messages stored in a source persistent queue at the source device over the external communication link to the destination device, wherein the transmitted messages have transmitted with them an associated sequence identifier which identifies the message stored in the source persistent queue and wherein the source persistent queue maintains the messages to be transmitted and associated sequence identifiers between execution of instances of the queue-to-queue transfer system by the source device;
means for receiving the transmitted messages and the associated sequence identifiers at the destination device in an order other than an order of the sequence identifiers of the messages and storing the received message and the associated sequence identifier in a destination persistent queue at the destination device and wherein the destination persistent queue maintains the received message and associated sequence identifier between execution of instances of the queue-to-queue transfer system by the destination device;
means for transmitting to the source device from the destination device a commit message, wherein the commit message identifies a largest sequence identifier of consecutive sequence identifiers associated with received messages of a sequence of messages which have been persistently stored in the destination persistent queue; and
means for making the persistently stored message in the destination persistent queue available to users of the destination device independent of whether a commit message identifying the message has been transmitted to the source device. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
means for receiving at the source device a commit message from the destination device, wherein the commit message specifies a sequence identifier of a message; and
means for discarding from the source persistent queue, messages having associated sequence identifiers which are not greater than the sequence identifier of the commit message.
-
-
14. A system according to claim 13, wherein a plurality of commit messages are received at the source device and where said means for discarding comprises means for discarding from the source persistent queue messages having associated sequence identifiers which are not greater than a largest sequence identifier of the sequence identifiers of the plurality of received commit messages.
-
15. A system according to claim 12, further comprising:
-
means for determining if a new connection between the source device and the destination device has been established;
means, responsive to the means for determining if a new connection has been established, for transmitting a resync message from the destination device to the source device, wherein the resync message identifies a largest sequence identifier of consecutive sequence identifiers associated with received messages of a sequence of messages which have been persistently stored in the destination persistent queue.
-
-
16. A system according claim 15, further comprising:
-
means for determining a message stored in the source persistent queue having an associated sequence identifier which is a next greater sequence identifier than the sequence identifier received from the destination device responsive to determining if a new connection has been established; and
means for beginning transmission of messages stored in the source persistent queue to the destination device from the determined message stored in the source persistent queue having an associated sequence identifier which is a next greater sequence identifier than the sequence identifier received from the destination device.
-
-
17. A system according to claim 16, further comprising means for discarding messages from the source persistent queue having an associated sequence identifier which is not greater than the highest sequence identifier received from the destination device.
-
18. A system according to claim 12, further comprising:
-
means for receiving a request from a user application of the destination device for a message received from the source device;
means for determining if a received message and an associated sequence identifier stored in the destination persistent queue at the destination device has an associated sequence identifier which is not greater than a highest sequence identifier associated with a persistently stored message; and
means for providing, to the requesting user application, a message stored in the destination persistent queue with the smallest sequence identifier if a received message and an associated sequence identifier in stored in the destination persistent queue at the destination device has an associated sequence identifier which is not greater than a highest sequence identifier associated with a persistently stored message.
-
-
19. The system of claim 18, wherein the highest sequence number associated with a persistently stored message comprises a highest sequence number of persistently stored messages having continuous sequence numbers in the sequence number order irrespective of whether a persistently stored message has a higher sequence number which is discontinuous from the persistently stored messages having continuous sequence numbers.
-
20. A system for communicating between a source device and a destination device over an external communication link, comprising:
-
means for transmitting a message stored in a source persistent queue at the source device over the external communication link to the destination device, wherein the transmitted message has transmitted with it an associated sequence identifier which identifies the message stored in the source persistent queue;
means for receiving the transmitted message and the associated sequence identifier at the destination device and storing the received message and the associated sequence identifier in a destination persistent queue at the destination device;
means for transmitting to the source device from the destination device a commit message, wherein the commit message identifies a largest sequence identifier of consecutive sequence identifiers associated with received messages of a sequence of messages which have been persistently stored in the destination persistent queue;
means for making the persistently stored message in the destination persistent queue available to users of the destination device independent of whether a commit message identifying the message has been transmitted to the source device;
means for transmitting a resync message from the source device to the destination device; and
means, responsive to receiving a resync message, for transmitting from the destination device to the source device the highest sequence identifier of a message persistently stored in the destination persistent queue. - View Dependent Claims (21, 22)
wherein the means for transmitting a resync message comprises means for transmitting a resync message from the source device to the destination device responsive to the means for determining if the source persistent queue has reached a fill threshold.
-
-
22. The system of claim 20, further comprising means for determining if a connection has been reestablished between the source device and the destination device;
- and
wherein the means for transmitting a resync message is responsive to the means for determining if a connection has been reestablished between the source device and the destination device.
- and
-
23. A computer program product for communicating between a source device and a destination device over an external communication link utilizing a queue-to-queue transfer,system, comprising:
-
a computer-readable storage medium having computer-readable program code means embodied in said medium, said computer-readable program code means comprising;
computer-readable program code means for transmitting messages stored in a source persistent queue at the source device over the external communication link to the destination device, wherein the transmitted messages have transmitted with them an associated sequence identifier which identifies the message stored in the source persistent queue and wherein the source persistent queue maintains the messages to be transmitted and associated sequence identifiers between execution of instances of the queue-to-queue transfer system by the source device;
computer-readable program code means for receiving the transmitted messages and the associated sequence identifiers at the destination device in an order other than an order of the sequence identifiers of the messages and storing the received message and the associated sequence identifier in a destination persistent queue at the destination device and wherein the destination persistent queue maintains the received message and associated sequence identifier between execution of instances of the queue-to-queue transfer system by the destination device;
computer-readable program code means for transmitting to the source device from the destination device a commit message, wherein the commit message identifies a largest sequence identifier of consecutive sequence identifiers associated with received messages of a sequence of messages which have been persistently stored in the destination persistent queue; and
computer-readable program code means for making the persistently stored message in the destination persistent queue available to users of the destination device independent of whether a commit message identifying the message has been transmitted to the source device. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30)
computer-readable program code means for receiving at the source device a commit message from the destination device, wherein the commit message specifies a sequence identifier of a message; and
computer-readable program code means discarding from the source persistent queue, messages having associated sequence identifiers which are not greater than the sequence identifier of the commit message.
-
-
25. A computer program product according to claim 24, wherein a plurality of commit messages are received at the source device and where said computer-readable program code means for discarding comprises computer-readable program code means for discarding from the source persistent queue messages having associated sequence identifiers which are not greater than a largest sequence identifier of the sequence identifiers of the plurality of received commit messages.
-
26. A computer program product according to claim 23, further comprising:
-
computer-readable program code means for determining if a new connection between the source device and the destination device has been established;
computer-readable program code means, responsive to the computer-readable program code means for determining if a new connection has been established, for transmitting a resync message from the destination device to the source device, wherein the resync message identifies a largest sequence identifier of consecutive sequence identifiers associated with received messages of a sequence of messages which have been persistently stored in the destination persistent queue.
-
-
27. A computer program product according claim 26, further comprising:
-
computer-readable program code means for determining a message stored in the source persistent queue having an associated sequence identifier which is a next greater sequence identifier than the sequence identifier received from the destination device responsive to determining if a new connection has been established; and
computer-readable program code means for beginning transmission of messages stored in the source persistent queue to the destination device from the determined message stored in the source persistent queue having an associated sequence identifier which is a next greater sequence identifier than the sequence identifier received from the destination device.
-
-
28. A computer program product according to claim 27, further comprising computer-readable program code means for discarding messages from the source persistent queue having an associated sequence identifier which is not greater than the highest sequence identifier received from the destination device.
-
29. A computer program product according to claim 23, further comprising:
-
computer-readable program code means for receiving a request from a user application of the destination device for a message received from the source device;
computer-readable program code means for determining if a received message and an associated sequence identifier stored in the destination persistent queue at the destination device has an associated sequence identifier which is not greater than a highest sequence identifier associated with a persistently stored message; and
computer-readable program code means for providing, to the requesting user application, a message stored in the destination persistent queue with the smallest sequence identifier if a received message and an associated sequence identifier in stored in the destination persistent queue at the destination device has an associated sequence identifier which is not greater than a highest sequence identifier associated with a persistently stored message.
-
-
30. The computer program product of claim 29, wherein the highest sequence number associated with a persistently stored message comprises a highest sequence number of persistently stored messages having continuous sequence numbers in the sequence number order irrespective of whether a persistently stored message has a higher sequence number which is discontinuous from the persistently stored messages having continuous sequence numbers.
-
31. A computer program product for communicating between a source device and a destination device over an external communication link, comprising:
-
a computer-readable storage medium having computer-readable program code means embodied in said medium, said computer-readable program code means comprising;
computer-readable program code means for transmitting a message stored in a source persistent queue at the source device over the external communication link to the destination device, wherein the transmitted message has transmitted with it an associated sequence identifier which identifies the message stored in the source persistent queue;
computer-readable program code means for receiving the transmitted message and the associated sequence identifier at the destination device and storing the received message and the associated sequence identifier in a destination persistent queue at the destination device;
computer-readable program code means for transmitting to the source device from the destination device a commit message, wherein the commit message identifies a largest sequence identifier of consecutive sequence identifiers associated with received messages of a sequence of messages which have been persistently stored in the destination persistent queue;
computer-readable program code means for making the persistently stored message in the destination persistent queue available to users of the destination device independent of whether a commit message identifying the message has been transmitted to the source device;
computer-readable program code means for transmitting a resync message from the source device to the destination device; and
computer-readable program code means, responsive to receiving a resync message, for transmitting from the destination device to the source device the highest sequence identifier of a message persistently stored in the destination persistent queue. - View Dependent Claims (32, 33)
wherein the computer readable program code means for transmitting a resync message comprises computer readable program code means for transmitting a resync message from the source device to the destination device responsive to the computer readable program code means for determining if the source persistent queue has reached a fill threshold.
-
-
33. The computer program product of claim 31, further comprising computer readable program code means for determining if a connection has been reestablished between the source device and the destination device;
- and
wherein the computer readable program code means for transmitting a resync message is responsive to the computer readable program code means for determining if a connection has been reestablished between the source device and the destination device.
- and
Specification