EP1287439A2 - Systeme und verfahren zum reihen von nachrichten - Google Patents
Systeme und verfahren zum reihen von nachrichtenInfo
- Publication number
- EP1287439A2 EP1287439A2 EP00989739A EP00989739A EP1287439A2 EP 1287439 A2 EP1287439 A2 EP 1287439A2 EP 00989739 A EP00989739 A EP 00989739A EP 00989739 A EP00989739 A EP 00989739A EP 1287439 A2 EP1287439 A2 EP 1287439A2
- Authority
- EP
- European Patent Office
- Prior art keywords
- message
- state
- queue
- subscriber
- publisher
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Definitions
- the present invention is generally related to the field of network messaging, and in particular to queues.
- An additional problem with conventional approaches is that system managers are faced with the burdensome task of attempting to manage a variety of data store components. Messages are difficult to track both during normal communication processes as well as during times of system failure. An additional problem with conventional approaches is that they permit duplicate processing of messages. In some applications, it is imperative that a message is processed only once. For example, a financial application should only debit a user's account once for each transaction. Duplicate processing of messages results in inaccurate information and requires vast amounts of resources to restore data to its proper state.
- a further problem with conventional approaches is that the queues are often overworked causing bottlenecks within the system.
- One embodiment of the present invention is a message queue management system configured to manage a first message queue of a first data store type and a second message queue of a second data store type, wherein the first message queue and the second message queue exhibit consistent behavior across a plurality of computer mediums.
- the message queue management system comprises a jour ⁇ alling module configured to track and manage message states of messages stored in the first message queue and the second message queue including a journalled state whereby journalled messages are retained in the first message queue and the second message queue.
- the message queue management system also comprises a once-only message processing module configured to track a plurality of message states to prevent re processing of previously processed messages stored in the first message queue and the second message queue.
- the message queue management system further comprises an extended storage module configured to retain the message in the first message queue and the second message queue when the journalling module specifies a journalled state and an interoperating module configured to coordinate interactions between the first message queue and the second message queue to perform data recovery on the first message queue and the second message queue upon the event of a failure.
- the message queue management module also comprises a once-only message processing module configured to track a plurality of message states to prevent reprocessing of previously processed messages stored in the first message queue and the second message queue.
- the message queue management module comprises an interoperability module configured to coordinate interactions among the plurality of queues enabling a distributed workflow and a recovery module configured to perform data recovery on the plurality of queues upon the event of a failure.
- the message queue management module also comprises a central managing module configured to provide single point control of the plurality of queues, wherein the single point control includes controlling a plurality of publishers and a plurality of subscribers and a load balancing module configured to designate a subset of the plurality of subscribers to at least the first message queue in a subscriber pool such that messages in the first message queue are processed by a first available subscriber in the subscriber pool.
- a central managing module configured to provide single point control of the plurality of queues, wherein the single point control includes controlling a plurality of publishers and a plurality of subscribers and a load balancing module configured to designate a subset of the plurality of subscribers to at least the first message queue in a subscriber pool such that messages in the first message queue are processed by a first available subscriber in the subscriber pool.
- Another embodiment of the present invention is an intelligent queue used to facilitate communication among a set business application programs.
- the intelligent queue may interact with a variety of business application programs using a variety of data store products.
- the present invention is a message queuing system for computer networks that provides reliable communication, ensures non-repetitive delivery, and is implemented in a medium-independent environment.
- the message queuing system comprises a message queue configured to run on one of a plurality of environments and to store messages received from message publishers.
- the message monitors retrieval by a plurality of message subscribers wherein a message is retained in the message queue after at least one of the plurality of message subscribers has accessed the message to permit additional access to the message.
- a message state module is configured to track message states of a message, wherein message state information indicates whether the message has been made available to and retrieved by at least one of the plurality of the message subscribers.
- a recording module is configured to selectively retain the message state information related to corresponding messages at least until the message is removed from the message queue.
- An interface module is configured to receive and send a plurality of types of data objects in messages and to communicate with a plurality of types of data messaging systems that act as message publishers or message subscribers.
- Another embodiment of the present invention is a method of message queuing among a plurality of message publishers and a plurality of message subscribers.
- the method comprises receiving a data object from a message publisher intended for at least one message subscriber; processing the data object to create a corresponding message wherein the corresponding message includes the data object and message information, storing the message in a message queue; tracking the status of the message from the perspective of the message publisher, tracking the status of the message from the perspective of the at least one message subscriber, and selectively retaining the message to remain in the message queue after the message has been retrieved by the at least one message subscriber.
- An additional embodiment of the present invention is a method for journalling a plurality of messages in a message queue, wherein the plurality of messages include a plurality of corresponding message states.
- the method comprises receiving a message, wherein the message includes a publisher message state and a subscriber message state.
- the method also comprises placing the message in a message queue and changing the publisher message state of the message to a journalled state.
- the method comprises retaining the message in the message queue.
- Another embodiment of the present invention is a method of subscriber pooling a plurality of messages in a message queue, wherein the plurality of message includes corresponding publisher states.
- the method comprises placing a message in a message queue, informing a plurality of subscribers that the message is available, and upon retrieval by one of the plurality of subscribers, preventing other of the plurality of subscribers from retrieving the message by changing the publisher message state to a terminal state.
- An additional embodiment of the present invention is a system for message queuing among a plurality of message publishers and a plurality of message subscribers.
- the system comprises a message queue module configured to communicate with a plurality of message publishers and a plurality of message subscribers and to receive a data object from a message publisher intended for at least one of a plurality of message subscribers.
- a data object processing module is configured to process the data object to create a corresponding message, wherein the corresponding message includes the data object and message information.
- a publisher tracking module is configured to track the status of the message from the perspective of the message publisher.
- a plurality of subscriber tracking modules are configured to track the status of the message from the perspective of the at least one of a plurality of intended message subscribers.
- a message tracking module is configured to selectively retain the message to remain in the message queue after the message has been retrieved by the at least one of a plurality of intended message subscribers.
- Another embodiment of the present invention is a method for queuing messages received from a publisher for retrieval by a subscriber comprising storing messages using a queue and a queue interface module, wherein the queue interface module is configurable to interface with a plurality of database protocols, extending message storage beyond the time in which the message has been retrieved by all intended subscribers, and tracking message states to enforce once-only delivery.
- Another embodiment of the present invention is a method for restoring message communication between a first message queue implemented using a first type of data store and a second message queue implemented using a second type of data store.
- the method comprises processing the first message queue to locate messages that have not been revealed. For messages that have not been revealed, path information is extracted to find message parents of the message. The message parents' states in the second message queue are inspected. Message parents are marked as “done,” and the message is “revealed” if at least one of the parent messages is marked “done.” In addition, the method comprises marking all message parents “clean” and the message “deleted” when the parent messages are not marked “done,” marking the message "revealed” if there are no parents.
- Another embodiment of the present invention is a system for queuing messages received from a publisher for retrieval by a subscriber comprising means for storing messages using a queue and a queue interface module wherein the queue interface module is configurable to interface with a plurality of database protocols, means for extending message storage beyond the time in which the message has been retrieved by all intended subscribers, and means for tracking message states to enforce once-only delivery.
- Figure 1A illustrates a high-level block diagram of one embodiment of an application integration system that includes intelligent queues.
- Figure IB illustrates a high-level block diagram of an additional embodiment of an application integration system that includes intelligent queues.
- Figure 2A illustrates a high-level block diagram of an additional embodiment of an application integration system that includes intelligent queues.
- Figure 2B illustrates a high-level block diagram of an additional embodiment of an application integration system that includes intelligent queues.
- Figure 3 illustrates a high-level diagram of one embodiment of an intelligent queue.
- Figure 4 illustrates a flowchart of one embodiment of a state diagram for message states.
- Figure 5 illustrates one embodiment of a message information record.
- Figure 6 illustrates a flowchart of one embodiment of a receive message process.
- Figure 7 illustrates a flowchart of one embodiment of an update message state process.
- a novel intelligent queue may be used to facilitate communication among a set business application programs.
- the intelligent queue may interact with a variety of business application programs using a variety of data store products.
- the intelligent queue provides extended message storage, once-only processing, and/or detailed message state information that tracks the status of each message from both the sender and the recipient's perspective.
- the intelligent queues are medium-independent in that they may use a variety of data store components, such as, for example, a B+ tree, the Sybase CT Lib database, the Oracle OCI database, the Oracle AQ database, an IBM-MQ Series database, the Microsoft MSMQ database, a flat file directory, and so forth.
- data store components such as, for example, a B+ tree, the Sybase CT Lib database, the Oracle OCI database, the Oracle AQ database, an IBM-MQ Series database, the Microsoft MSMQ database, a flat file directory, and so forth.
- the intelligent queue is easily managed in a large-scale environment. A large enterprise may employ hundreds of intelligent queues.
- the ability to use a single type of queue throughout the system affords the system administrator the ability to perform message tracking while dealing with only one type of queue, regardless of the underlying data store.
- the intelligent queue provides a way to track the state of its messages allowing system managers to know the status of a message from both the sender and the recipient's perspective.
- knowledge of the message states allows the messages to be recovered and resent after system failure.
- a message's state may be changed to designate activity rather than tying up system resources to move a message to a different location or to delete a message.
- Interoperability between queues implemented using different data stores is also provided. Regardless of the type of data store, the messages may be recovered in event of a system failure.
- the intelligent queue provides extended message storage.
- System administrators may specify when a message should be removed from the intelligent queue allowing messages to remain in the intelligent queue even after all subscribers to the message have processed the message. Thus, system administrators have time to track, distribute, archive, edit, and perform other administrative tasks, as necessary. Furthermore, when system failure occurs, system administrators are able to view the messages in the queue and perform the appropriate message recovery.
- the intelligent queue can make available unprocessed messages to the appropriate application without exposing messages that have already been processed.
- the intelligent queue may provide load balancing through the use of subscriber pooling.
- a message may be made available for several recipients such that the first available recipient processes the message maximizing resources and improving message queuing efficiency.
- the intelligent queue may also enable recipients to be designated as members of a subscriber pool, in addition, a combination of load balancing and publish/subscribe operations may be used to improve efficiency. For example, the members of the subscriber pool may subscribe to messages in the intelligent queue in parallel with recipients not in the subscriber pool.
- the intelligent queue may be centrally managed allowing for a remote user to perform maintenance and monitoring of the various intelligent queues.
- the intelligent queue (“10”) provides persistent data storage for facilitating communication among a variety of applications and components.
- the following example illustrates the IQ in operation in publish/subscribe mode.
- Figure 1A illustrates a transaction system that includes a point of sale system 110 that sends a transaction for credit approval by an automated credit approval system 120.
- the point of sale (“POS") module 130 receives a transaction from the point of sale system 110 and converts the transaction into a standard message format.
- the point of sale module 130 then publishes the message to the Sybase IQ 140, implemented using the Sybase database.
- the customer database module 150 retrieves the message from the Sybase IQ 140 and queries the customer database 160 for relevant customer information (e.g., credit account, banking institution, etc.).
- relevant customer information e.g., credit account, banking institution, etc.
- the customer database module 150 adds the relevant customer information to the message and publishes the message to the MSMQ IQ 170, implemented using Microsoft's MSMQ queue.
- the credit approval module 180 retrieves the message from the MSMQ IQ 170 and converts the message into a format understood by the credit approval system 120.
- Figure 1B illustrates another embodiment of a transaction system that includes a point of sale system 110 that sends a transaction for credit approval to an automated credit approval system 120 as well as to a central management module 190.
- the central management module 190 allows for the management and monitoring of the intelligent queues from a remote location. For example, via the central management module 190, subscribers and publishers may be assigned and/or error checking may occur.
- the central management module 190 may be implemented on a system that is remote from one or all of the intelligent queues.
- FIG. 2A illustrates a second example transaction system wherein the customer database module 150 and MSMQ IQs 170 are duplicated to allow for load balancing.
- the Sybase IQ 140 may include messages that may be retrieved by any of the customer database modules 150. This load balancing is implemented using subscriber pooling such that the first available customer database module 150 may process the message. This system decreases the occurrence of bottlenecks, and improves the throughput time for messages being retrieved from the Sybase IQ 140.
- FIG. 2B illustrates a third example transaction system wherein some of the customer database modules 150 and MSMQ IQs 170 are duplicated to allow for load balancing and subscriber pooling while other of the customer database modules 150 and MSMQ IQs 170 are in publish/subscribe mode.
- the Sybase IQ 140 may include messages that can be retrieved by any of the customer database modules 150. This load balancing is implemented using subscriber pooling such that the first available customer database module 150 may process the message. This system decreases the occurrence of bottlenecks, and improves the throughput time for messages being retrieved from the Sybase IQ 140.
- FIG. 3 illustrates one embodiment of an intelligent queue 310.
- the intelligent queue 310 includes a set of intelligent queue processes 320, an index database 330, and a data store component 340.
- the intelligent queue 310 includes many processes that may be used to add and extract information to and from the queue.
- the intelligent queue processes include a receive message process 322, an update message state process 324, as well as several other processes 326 that may provide information about messages in the queue.
- the intelligent queue processes 320 are described in greater detail below.
- the index database 330 stores the message state information for each message that is published to the queue.
- the index database 330 is implemented using a flat file structure and updated each time a message state is changed.
- the index database 330 may communicate with an archive database (not shown) in which information is stored on a periodic basis, such as, for example, hourly, daily, weekly, bi-weekly, and so forth.
- the index database 330 may be used after a system failure to determine the status of each message before and after the failure and to provide information on how the system should be restored.
- the data store component 340 is the component that stores the messages for retrieval by the subscribers.
- the data store component 340 acts as a temporary storage unit wherein messages may be published and stored until all of the subscribers are able to fetch and process the messages.
- index database 330 and the data store component 340 are represented as two separate data structures, it is recognized that in other embodiments, the index database 330 and the data store component 340 may be combined and/or implemented using the same data structure.
- the index database 330 and the data store component 340 may be implemented as sets of tables within the same relational database.
- data structures may be used to implement the index database 330 and/or the data store component 340, such as, for example, linked lists, flat files, binary trees, B + trees, arrays, queues, databases, and so forth.
- different types of databases may be used, such as, relational databases, object oriented databases, hierarchical databases, and so forth.
- several commercial data store products may also be used, such as, the Sybase CT Lib database, the Oracle OCI database, the Oracle AQ database, an IBM-MQ Series database, the Microsoft
- MSMQ database Microsoft Access, Oracle, Paradox, Fox Pro, Microsoft® SQL Server, as well as other proprietary databases.
- the intelligent queue 310 in Figure 3 is implemented using several components, it is recognized that in other embodiments, the intelligent queue 310 may be implemented as a single component 310, such as a proprietary data store component 340 that includes an index database 320 as well as the intelligent queue processes 320.
- the intelligent queue 310 may run in a variety of modes, such as the publish/subscribe mode, the load balancing mode, and/or the combination mode.
- the intelligent queues 310 may perform in a publish/subscribe mode wherein a publisher places a message in the intelligent queue that is to be retrieved by one or more subscribers. This publish/subscribe mode avoids duplication of messages as only a single instance of the message is saved in the queue even though it is to be accessed by several subscribers.
- the intelligent queues 310 may also perform in a load-balancing mode wherein the intelligent queue permits subscriber pooling.
- the intelligent queue 310 may receive a message from a publisher that is intended for one of several subscribers. The publisher does not care which subscriber fetches the message, so long as the message is not fetched by more than one subscriber.
- the load-balancing feature shortens the length of the average queuing period and helps to alleviate bottlenecks.
- the intelligent queue 310 may be configured to run in publish/subscriber mode at all times. In another embodiment, the intelligent queue 310 may be configured to run in load-balancing mode at all times, or in another embodiment, the intelligent queue 310 may be designed to run in load-balancing mode upon the trigger of some event, such as, for example, when network traffic exceeds a predetermined threshold. In a further embodiment, the intelligent queue 310 may be designed to run publish/subscribe mode, load balancing mode, and a combination mode depending on each individual message.
- the intelligent queues 310 track message states for each state that a message enters. These message states correspond to events that occur from the publisher's perspective and the subscriber's perspective. Figure 4 illustrates one embodiment of the message states and their transitions.
- the intelligent queue provides two classes of message states publisher states 410 and subscriber states 420.
- the publisher states 410 allow a message publisher to specify the status of each message after the publisher places the message in an intelligent queue.
- PUT The publisher has placed the message in the intelligent queue.
- REVEALED The publisher has made the message available to the subscribers.
- JOURNALLED All intended subscribers have retrieved the message.
- the message will remain in the journalled state (thus allowing for extended message storage time) such that other processing of the message may be performed (e.g., archiving by the system administrator, retrieval by non-subscribers, etc.).
- the subscriber states 420 allow each message subscriber to specify the status of each message after the publisher has made the message available in the intelligent queue.
- Message state information records the status of each message subscriber such that a subscriber may be precluded from retrieving a message that it has already retrieved.
- FETCHED The message subscriber has retrieved the message successfully, but has not yet finished.
- DONE The subscriber has finished retrieving the message and, if necessary, processing the message.
- JOURNALLED The message subscriber is finished with the message as the subscriber has successfully retrieved and, if necessary, processed the message, the message retrieval failed, or the message expired.
- the message will remain in the journalled state (thus allowing for extended message storage time) such that other processing of the message may be performed (e.g., archiving by the system administrator, retrieval by non-subscribers, etc.)
- EXPIRED The message has expired beyond a pre-specified time limit. This state may be automatically controlled or may be triggered by the publisher or subscriber.
- JOURNALLED state the EXPIRED state, the UNUSABLE state, the DONE state, and the JOURNALLED (IMPLIED) state.
- message can be efficiently journalled because there is no need to copy or remove them into an archived directory. Resources normally required to copy or remove messages may be allocated to other tasks.
- Publisher X wants to publish a message to be retrieved by Subscriber 0, Subscriber 1 , and Subscriber 2.
- Publisher X may not care about the order in which the messages are retrieved, but wants to ensure that all subscribers retrieve the message.
- the publisher may designate an order in which the messages are retrieved, such as, for example, by making the message revealed to each subscriber one at a time. Referring to the first example, first, Publisher X places the message in the queue as a publish/subscribe message. Next, Publisher X reveals the message for Subscriber 0, Subscriber 1, and Subscriber 2.
- Subscriber 2 then begins processing the message and enters the Get state. Next, Subscriber 2 fetches the message and proceeds to the Done state and then the Journalled state. While Subscriber 2 was in the Fetched state. Subscriber 0 may then begin processing the message in the Get state and then fetch the message and proceed to the Fetched state. Subscriber 0 may determine that the message is unreadable and then proceed to the Unusable state and onto the Journalled state. Subscriber 0 may then inform Publisher X that it was unable to fetch the message.
- Subscriber 1 may begin processing the message in the Get state and then move to the Fetched state. Subscriber 1 may then process the message in the In Process state and proceed to the Done state and then to the
- Publisher X wants to publish a message to be retrieved by Subscriber 0, Subscriber 1, or Subscriber 2.
- Publisher X does not care which subscriber retrieves the message, but would like it retrieved by the first available subscriber.
- Publisher X places the message in the queue as a load/balancing message.
- Publisher X reveals the message for Subscriber 0, Subscriber 1, or Subscriber 2.
- Subscriber 2 then begins processing the message and enters the Get state.
- the state of the message for Subscriber 0 and Subscriber 1 changes to Expired and then to Journalled allowing Subscriber 0 and Subscriber 1 to process a different message when they are free.
- Publisher X changes the state of the message to Journalled.
- Publisher X places the message in the queue, in one embodiment, the intelligent queue may treat this as two messages, one message using load balancing between Subscriber 0 and Subscriber 1 with the other message using publish/subscribe mode with Subscriber 2 and Subscriber 3. In another embodiment, the publisher may designate to which subscribers the message is revealed. Thus, after Subscriber 0 or Subscriber 1 begins processing the message, the message becomes expired the Subscriber(s) that did not retrieve the message.
- An advantage of one embodiment of this invention is the ability to perform message recovery when a system failure occurs.
- the message recovery may also allow for interoperability between intelligent queues implemented using different data stores.
- the interoperability may allow for data translation, interfacing, correlation services, and/or data recovery.
- the data translation may allow data to be translated from one format to another, such as, for example, from MS IQ format to Oracle 10 format.
- interfacing may include providing connection details, such as, for example, network protocols, application programming interface calls, long connections, and so forth.
- the correlation services may include combining multiple message into a single message and publishing it to another message queue.
- the data recovery may include procedures for restoring the messages in the queue. Thus, regardless of the type of data store, the messages may be recovered in event of a system failure.
- Step 1 Go through the MSMQ IQ 170 to find messages that are not marked “Revealed.” These messages have "Clean” state.
- Step 2 Once a "Clean” message is found extract the path information to find the parents of the message. If the message does not have parents, go to Step 4.
- Step 3 Go to the Sybase IQ 140 to check each parent message's state. If one of the parent messages is marked “Done,” then mark all parent messages “Done” and mark the child message “Revealed.” If none of the parent messages is marked “Done,” then mark all parent messages "Clean” and mark the child message "Deleted.”
- Step 4 if the message does not have parent, mark this message "Revealed.”
- Step 5 After the "Clean" messages in the MSMQ IQ 170 are processed ("recovered"), go through the
- Sybase IQ 140 to find messages that are marked “Fetched” but not “Done.” Mark these "Fetched but not Done” messages “Clean.” Thus, if the POS module 130 fails, the following guidelines may be used to recover the messages.
- Scenario 1 If a message is published onto the Sybase IQ 140 and message is not fetched, then follow Step 1, Step 2, and then Step 4.
- Scenario 2 If a message is put onto the Sybase IQ 140 and message is marked "Fetched,” then let the subscriber do the recovery. If the credit approval module 180 fails, the following guidelines may be used to recover the messages.
- Scenario 1 If a message is fetched but not marked "Done,” then follow Step 5.
- Scenario 2 If a message is fetched from the Sybase IQ 140 and put onto the MSMQ IQ 170, then follow Step 1, Step 2, and then Step 3.
- Scenario 3 If a message is fetched from the Sybase IQ 140, put onto the MSMQ IQ 170, and marked
- Step 1 "Done” in the Sybase IQ 140, then follow Step 1, Step 2, and then Step 3. It is recognized that the above recovery logic illustrates one embodiment of message recovery using message state information and that other embodiments may be used.
- the message states are recorded in a file that corresponds to the message and is stored in the intelligent queue index. It is recognized that in other embodiments, the message states may be recorded in other data structures, such as, for example, a linked list, a finite state machine, a tree, a graph, and so forth. Furthermore, in other embodiments, the message state information may be located within the message, with information about other messages, and so forth.
- FIG. 5 illustrates one embodiment of message object 510.
- the message object 510 includes message state information, such as, the message identifier, the publisher ID, and the subscriber IDs.
- the message state information includes the time stamp for each state that has already occurred, and the current state. It is recognized that in other embodiments, other formats of message information and may be used.
- the message identifier may be assigned by the publisher of the message, whereas in another embodiment, the message identifier may be automatically generated by the intelligent queue.
- the exemplary message object 510 in Figure 5 was published by Publisher X in publish/subscriber mode and intended for Subscribers 0-2.
- Publisher X placed the message in the queue at time
- Subscriber 0 started processing the message at 12:14:13. Thirteen seconds later, it fetched the message and was done retrieving the message at 12:14:54. Subscriber 0 then journalled the message at 12:15:02. Subscriber 1 started processing the message at 12:14:25, and sixty one seconds later fetched the message.
- Subscriber 1 began processing the message and finished ten seconds later.
- Subscriber 1 journalled the message.
- Subscriber 2 started processing the message at 12:15:08. At 12:15:32, Subscriber 2 fetched the message and at 12:15:44, Subscriber 2 declared the message unusable and journalled the message at 12:15:59. After the message has been journalled, Subscriber 2 may inform the publisher that it encountered a problem with retrieving the message, and thus, the publisher may make the message available again for Subscriber 2.
- the intelligent queue 310 includes intelligent queue processes 320 that may be used to add and extract information to and from the queue.
- the intelligent queue processes 320 include a receive message process 322, an update message state process 324, as well as several other process 326 that may provide information about information in the queue.
- the receive message process 322 receives a message object from a publisher and places the message object in the queue.
- Figure 6 illustrates one embodiment of the receive message process 322 wherein a subscriber sends a message object to the intelligent queue.
- the receive message process 322 receives a message object from a publisher (block 620). Next, the receive message process 322 performs checks on the message object (block 630), such as, for example, error detection, error correction, and/or verification of the sender. The receive message process 322 then stores the message in the data store (block 640). As discussed above, the data store may be implemented using a variety of data structures, such as, for example, a B+ tree, a flat file directory, a linked list, a tree, an array, a database, and so forth. Next, the receive message process 322 stores the message information corresponding to the message in the index (block 650).
- the message information may be sent from the publisher, while in other embodiments, the receive message process 322 may derive the message information from the message header, default values, and so forth.
- the receive message process 322 may then determine which subscribers are supposed to retrieve the message (block 660). This may include determining all of the subscribers that should retrieve the message such as in the publish/subscribe mode, as well as all of the subscribers that are eligible to retrieve the message such as in the load balancing mode. Finally, for each subscriber, the receive message process 322 sends the subscriber an alert informing the subscriber that a message is available in the queue (block 670) and proceeds to an end state (block 680).
- the update message state process 324 receives an update request from a publisher or subscriber and updates the corresponding message state in the index.
- Figure 7 illustrates one embodiment of the update message state process 324 wherein a publisher or subscriber sends an update request to the intelligent queue.
- the update message state process 324 receives an update request from a publisher or a subscriber (block 720).
- the update request may be in a variety formats, such as, for example, an email, a data structure, a data record, a message object, and so forth.
- the update message state process 324 locates the message state information in the index that corresponds to the update request (block 730).
- the update message state process 324 updates the message state information with the updated information (block 740) and proceeds to an end state (block 750). For example, the update message state process 324 may add the new time stamp of the current state to the corresponding state and change the value of the "current state" field to the current state.
- the message state information may be automatically updated. For example, when a subscriber retrieves a message, the intelligent queue may automatically record the time that the retrieval was made.
- the intelligent queue processes 320 may include other process that provide information about information in the queue.
- the intelligent queue may include a retrieve message process that retrieves a copy of a message from the queue and forwards the copy to a subscriber.
- the intelligent queue may also include a view message process that allows an outside party to view message information and/or message state information in the queue without making any alterations to the information.
- a set message priority process may also be included that sets the priority of a message within the queue, as well as a set of get information processes that retrieve designated pieces of information about a message, such as, for example, the message subject, the message handle, the message header, and so forth.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16292799P | 1999-11-01 | 1999-11-01 | |
US162927P | 1999-11-01 | ||
PCT/US2000/041737 WO2001033407A2 (en) | 1999-11-01 | 2000-11-01 | Systems and methods of message queuing |
Publications (1)
Publication Number | Publication Date |
---|---|
EP1287439A2 true EP1287439A2 (de) | 2003-03-05 |
Family
ID=22587708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP00989739A Withdrawn EP1287439A2 (de) | 1999-11-01 | 2000-11-01 | Systeme und verfahren zum reihen von nachrichten |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1287439A2 (de) |
JP (1) | JP2003524827A (de) |
KR (1) | KR20020070274A (de) |
AU (1) | AU2620701A (de) |
CA (1) | CA2389530A1 (de) |
WO (1) | WO2001033407A2 (de) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2378781B (en) | 2001-08-16 | 2005-06-01 | Sun Microsystems Inc | Message brokering |
GB2378782B (en) | 2001-08-16 | 2005-04-13 | Sun Microsystems Inc | Message brokering |
WO2004008702A1 (en) * | 2002-07-11 | 2004-01-22 | Ravi Shankar | Using smart nomadic objects to implement secure distributed multimedia messaging applications and services |
US7631315B2 (en) | 2005-03-28 | 2009-12-08 | Microsoft Corporation | Using subqueues to enhance local message processing |
DE602006007269D1 (de) * | 2005-04-18 | 2009-07-30 | Research In Motion Ltd | Verfahren zur abwicklung der kommunikation über eine nicht-dauerhafte kommunikationsverbindung |
US8869169B2 (en) | 2007-04-30 | 2014-10-21 | Accenture Global Services Limited | Alternately processing messages |
EP1988461B1 (de) | 2007-04-30 | 2016-04-20 | Accenture Global Services Limited | Alternierendes Verarbeitungsverfahren, System und Computerprogrammprodukt |
GB2533328A (en) | 2014-12-16 | 2016-06-22 | Ibm | Message processing |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0673523B1 (de) * | 1993-10-08 | 1999-02-10 | International Business Machines Corporation | Nachrichtenübertragung über ein netzwerk |
US5873084A (en) * | 1996-01-18 | 1999-02-16 | Sun Microsystems, Inc. | Database network connectivity product |
WO1998059519A2 (en) * | 1997-06-24 | 1998-12-30 | Northern Telecom Limited | Asynchronous message processing system and method |
-
2000
- 2000-11-01 JP JP2001535831A patent/JP2003524827A/ja active Pending
- 2000-11-01 WO PCT/US2000/041737 patent/WO2001033407A2/en not_active Application Discontinuation
- 2000-11-01 EP EP00989739A patent/EP1287439A2/de not_active Withdrawn
- 2000-11-01 KR KR1020027005633A patent/KR20020070274A/ko not_active Application Discontinuation
- 2000-11-01 AU AU26207/01A patent/AU2620701A/en not_active Abandoned
- 2000-11-01 CA CA002389530A patent/CA2389530A1/en not_active Abandoned
Non-Patent Citations (1)
Title |
---|
See references of WO0133407A3 * |
Also Published As
Publication number | Publication date |
---|---|
JP2003524827A (ja) | 2003-08-19 |
KR20020070274A (ko) | 2002-09-05 |
WO2001033407A3 (en) | 2002-12-05 |
WO2001033407A2 (en) | 2001-05-10 |
AU2620701A (en) | 2001-05-14 |
CA2389530A1 (en) | 2001-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6970945B1 (en) | Systems and methods of message queuing | |
US6411698B1 (en) | System and method for communication between a telephone data repository and downstream data processing applications | |
US7100005B2 (en) | Record storage and retrieval solution | |
US7657509B2 (en) | System to manage and store backup and recovery meta data | |
US6292801B1 (en) | System and method for managing computer and phone network resources | |
US8139742B2 (en) | Apparatus and method for facilitating service management of communications services in a communications network | |
US6826560B1 (en) | Subscription and notification with database technology | |
US7558927B2 (en) | System to capture, transmit and persist backup and recovery meta data | |
KR101224752B1 (ko) | 시간 제한적 메시지들의 효율적인 처리 방법 | |
US5606600A (en) | Generalized statistics engine for telephone network employing a network information concentrator | |
US7487550B2 (en) | Methods, apparatus and computer programs for processing alerts and auditing in a publish/subscribe system | |
US8843580B2 (en) | Criteria-based message publication control and feedback in a publish/subscribe messaging environment | |
US8615580B2 (en) | Message publication feedback in a publish/subscribe messaging environment | |
JP2002528966A (ja) | インテリジェントネットワークに分配されたサービスノード中のサービスモジュールを展開する方法および装置 | |
US20120215873A1 (en) | Failure-controlled message publication and feedback in a publish/subscribe messaging environment | |
US20050185673A1 (en) | System and Method for Managing Computer and Phone Network Resources | |
CN110535713A (zh) | 监控管理系统以及监控管理方法 | |
TW200821863A (en) | Work item event procession | |
CN104636211A (zh) | 一种软件系统间的信息交互方法及中间件系统 | |
WO2001033407A2 (en) | Systems and methods of message queuing | |
US8386503B2 (en) | Method and apparatus for entity removal from a content management solution implementing time-based flagging for certainty in a relational database environment | |
CN101495973A (zh) | N^n数据管理、访问、存储、传输、交换和检索系统(数据集中管理) | |
US20040243653A1 (en) | System and method for generating an alarm when an abnormal database backup status occurs | |
JP2003085007A (ja) | デジタル情報劣化方法、装置、及びプログラム | |
CA2200011A1 (en) | Service level agreement management in data networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20020531 |
|
AK | Designated contracting states |
Kind code of ref document: A2 Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION HAS BEEN WITHDRAWN |
|
17Q | First examination report despatched |
Effective date: 20041012 |
|
18W | Application withdrawn |
Effective date: 20041111 |