US20090144357A1 - Use of template messages to optimize a software messaging system - Google Patents
Use of template messages to optimize a software messaging system Download PDFInfo
- Publication number
- US20090144357A1 US20090144357A1 US12/251,920 US25192008A US2009144357A1 US 20090144357 A1 US20090144357 A1 US 20090144357A1 US 25192008 A US25192008 A US 25192008A US 2009144357 A1 US2009144357 A1 US 2009144357A1
- Authority
- US
- United States
- Prior art keywords
- message
- template
- messages
- field
- correlation identifier
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 claims abstract description 21
- 238000000354 decomposition reaction Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000003909 pattern recognition Methods 0.000 description 2
- 238000012797 qualification Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
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/547—Messaging middleware
Definitions
- the present application relates to distributed applications and more particularly to using template messages to optimize messaging.
- Distributed software applications often interact across computer networks via asynchronous messaging protocols.
- those distributed messaging applications are designed such that the sender and receiver parts of the applications agree on the content and format of the messages to be exchanged.
- message passing it is often the case that a series of messages will be sent, only to have each message differ from the rest by a few key fields. That is, the bulk of the message remains the same across all messages in the series. In such a case, sending the entire message each time is clearly inefficient. Therefore, what is desirable is a method that efficiently handles messages in such situations.
- a method of optimizing a software messaging system may comprise autonomously detecting patterns of repeated data in a plurality of messages; generating a plurality of template messages, each of said plurality of template messages containing a different pattern of repeated data detected in said plurality of messages; assigning a correlation identifier to said each template message. Said generating may further include replacing a template message with one determined to have more of commonly repeated data. The method may also include storing said each template message identified by a corresponding correlation identifier.
- the method may further comprise, for each message being communicated, extracting dynamic portion of said each message and generating a field message to contain the dynamic portion; selecting a template message from said plurality of template messages having message content of said each message; associating a correlation identifier identifying said selected template message with said field message; and communicating said field message to a recipient application.
- the method may further comprise, recomposing said each message using said field message and said correlation identifier.
- the step of recomposing may further include searching recipient application's cache storing a plurality of template messages to select a template message identified by said correlation identifier.
- the method may also comprise notifying said recipient application when there is a change in one or more of the template messages cached in said recipient application's cache.
- FIG. 1 is a block diagram illustrating message decomposition and recomposition of the present disclosure.
- a method for sending smaller messages in which a series of messages largely contain the same content is provided.
- network usage is often charged by volume transferred.
- Messaging systems typically have a memory cache of limited size, beyond which messages must be spilled onto the disk. Accessing disk storage is orders of magnitude slower than direct memory access. By restricting the size of the messages flowing around the system, the cache usage is optimized as well as the network usage.
- a method of the present disclosure in one embodiment enables applications to exchange messages in two parts; a set of “template messages”, which contain the bulk of the data to be exchanged, which only change content infrequently, or which need to be centrally administered for consistency of formats between applications; and the series of “field messages”, which contain the subset of message data which changes for every message.
- An existing messaging system or software may be augmented to provide such functionality.
- the scope of usage of the template messages, or the realm of applicability of the template messages may be the entire messaging system or a logical group of messaging component(s), and is not limited to a single or a set of queue(s), topic(s) or application(s).
- FIG. 1 is a block diagram illustrating message decomposition and recomposition of the present disclosure.
- a message 102 may be decomposed into two parts, a template message containing content portion of the message 104 and a field message 106 containing information or attributes related to the message.
- Template messages may be stored at 108 and field messages may be stored at 110 .
- the storage 108 , 110 may be any one or combination of database, a queue, or cache memory, or like, for instance, depending on the specific implementation of the method.
- a decomposed message may be recomposed by combining a template message retrieved from the template message store 112 and field message 114 retrieved from the store 110 .
- a template message is identified in a field message by a unique identifier.
- the main message may be boilerplate material describing the nature of the sale, the obligations of the seller and buyer, etc., and the only part of the message that changes in each message may be item name, item number, brief description, reserve price, sale price, seller id, buyer id.
- the boilerplate material may form a template message; and the item name, item number, brief description, reserve price, sale price, seller id, buyer id may form the field message.
- each message may include the course name, description, pre-requisites, etc., which can be designated for being a template message.
- Unique or different parts of the message such as the trainee name, date taken, examination score, etc., would be placed in the field message.
- a sending application may send its set of template messages to a known queue or repository on the messaging system.
- a set contains one or many.
- Each template message includes a unique correlation identifier (id).
- a sending and receiving applications may use an existing pre-defined repository of template messages.
- the repository of template messages may be shared among applications or global to all applications. An administrator or an application with sufficient authority may add, remove or modify the template messages directly.
- the sending application sends field messages 106 , each with a correlation id to match the relevant template message 104 .
- the main message flows around the system are therefore the field messages, which are typically small, thus providing the required optimizations.
- the system browses the queue (or repository or cache memory or like) of template messages to pick up the template messages it needs non-destructively, as well as destructively getting the field messages containing the dynamic data.
- the appropriate template message is looked up, and a known or will be known algorithm is used to insert the contents of the field messages 114 into the specified template message 112 in order to build the complete messages 116 for the recipient to use.
- the method of the present disclosure may be implemented within, or making use of, a current messaging middleware technology, such as IBM's WebSphere MQTM product.
- a sending application decomposes its text-based messages according to a set of named fields listed in the appropriate template message. For each named field, its value is removed from the original message and added to a field message as a name/value pair, i.e., field name and value corresponding to that field.
- a template message may contain named tags or tokens, typically with special delimiters such as ⁇ and>, in the places where the fields would be in the full messages. In recomposing at the destination, the template message is parsed to find the token delimiters, the token name between each pair is read and the token with the value from the field message matching the token name is substituted.
- Original message may include:
- Template message for the above original message may be:
- CorrelId AuctionSale ...content...
- the item ⁇ ItemName> was sold for $ ⁇ Price> by ⁇ Seller>.
- ...content ...
- a sending application decomposes its data structured messages by comparing a sequence of similar messages to identify those data fields that differ between messages. Those fields that are common to all messages in the sequence are entered into a template message, with named placeholders, typically with a token indicating their location, for the differing fields. These differing fields are put into field messages.
- the recomposing application replaces the placeholders in a template message with the equivalent fields from the current field message, either by name or simply by sequence order.
- Original message may include:
- Template message for the original message may be:
- template messages and field messages are stored on the messaging system's queues, and the receiving application retrieves both the template messages (non-destructively) and the field messages (destructively), and performs the message composition within the bounds of the receiving application.
- the receiving application may cache the template messages as it gets them.
- An agent or a process may be deployed to notify the receiving application when template messages change.
- the receiving application can clear the template messages from its cache.
- a sender application may send an additional notification message via the messaging system whenever a template message is changed. This scheme significantly improves network bandwidth usage between queues and receiver, and is particularly efficient when template messages change very infrequently.
- the messaging system may perform the message composition on behalf of the receiving application.
- the network bandwidth is similar to the above embodiment.
- An advantage of this embodiment is that the complexity is removed from the specific application and provided within the generic messaging system.
- the algorithm(s) for composing field messages into their template messages are generic so they can be built into the messaging system without knowledge of the specific formats required by applications.
- a messaging system composes the messages on the messaging server (i.e., on the computer storing the queues of messages). This has the advantage of keeping the complexity on the server system, allowing centralization of the main messaging processing, and keeping the client software running with the applications as simple and small as possible.
- Another embodiment may have the messaging system perform both message decomposition from full messages sent by a sending application into template messages and field messages, and message recomposition on behalf of the receiving application.
- the sending and receiving applications are relatively unaware of the decomposition and recomposition process, in that they send and receive full messages.
- the sending application indicates which templates and/or algorithms the messaging system should use for transmission of its messages.
- the method becomes largely an internal optimization process within the messaging system to enable applications to minimize the network bandwidth and storage used by the messages.
- the caching and template message update methodology described above may be applied within this embodiment.
- a messaging system exercises autonomous selection of decomposition algorithms. As a series of messages is sent through the system, patterns of repeated data are detected by the system. The repeated data is then extracted into template messages, and subsequent messages following the same patterns have their dynamic data extracted into field messages for forwarding, associated with the relevant template messages for recomposition at the receiving end before delivery to the receiving application.
- Pattern recognition may be as simple as monitoring a sequence of messages flowing from a sending application and comparing their contents, either character by character or, in a structured message, field by field may be used for autonomous selection of decomposition algorithms. As each message is examined, a template message is built up to contain those elements of the messages that are completely common across all messages. During this phase of operation, messages may be sent complete rather than using templates and fields. Once some n messages or predetermined number of messages are detected with a threshold of m % of their content completely common, then that template message is brought into fill use. Any subsequent messages also completely matching that template will have their non-common content extracted into field messages and sent in that form for recomposition with the template message using algorithms such as those described above. During pattern recognition, multiple template messages may be built to match different patterns. An algorithm can be tuned using various thresholds to distinguish between different patterns/templates, to determine when to start and stop using templates, when to replace a template with one with even more common content, etc.
- template cache management may be implemented by keeping the master copy of all template messages on a queue.
- the receiving application when it gets a field message to recompose, looks for the template message with a matching correlation id in its local cache. If it is found, then that template message is used for recomposition. If not, then the template message queue is browsed to find that template message by correlation id, and a copy is placed in the local cache for future use, then recomposition continues.
- the sending application (or some other template management system) needs to change a template message, then it also sends a notification message to those applications using the template message queue. That notification will identify, by correlation id, the template message that has been changed, and the receiving applications will simply remove that template message from their local caches. Next time that template message is required, the changed copy will be retrieved from the queue since there will not be a cached copy.
- the system and method of the present disclosure may be implemented and run on a general-purpose computer or computer system.
- the computer system may be any type of known or will be known systems and may typically include a processor, memory device, a storage device, input/output devices, internal buses, and/or a communications interface for communicating with other computer systems in conjunction with communication hardware and software, etc.
- the terms “computer system” and “computer network” as may be used in the present application may include a variety of combinations of fixed and/or portable computer hardware, software, peripherals, and storage devices.
- the computer system may include a plurality of individual components that are networked or otherwise linked to perform collaboratively, or may include one or more stand-alone components.
- the hardware and software components of the computer system of the present application may include and may be included within fixed and portable devices such as desktop, laptop, and server.
- a module may be a component of a device, software, program, or system that implements some “functionality”, which can be embodied as software, hardware, firmware, electronic circuitry, or etc.
Abstract
A method uses template messages to optimize software messaging system. A message is decomposed into a template message portion containing message content, and a field message portion. A correlation identifier identifies a template message and only those template messages with unique correlation identifiers are stored or forwarded. A field message portion includes a correlation identifier associated with a template message. A recomposition function combines a field message portion with the appropriate template message portion as identified in the field message portion.
Description
- This application is a continuation of U.S. Ser. No. 11/947,639, filed Nov. 29, 2007, the entire contents of which are incorporated herein by reference.
- The present application relates to distributed applications and more particularly to using template messages to optimize messaging.
- Distributed software applications often interact across computer networks via asynchronous messaging protocols. Typically, those distributed messaging applications are designed such that the sender and receiver parts of the applications agree on the content and format of the messages to be exchanged. In message passing, it is often the case that a series of messages will be sent, only to have each message differ from the rest by a few key fields. That is, the bulk of the message remains the same across all messages in the series. In such a case, sending the entire message each time is clearly inefficient. Therefore, what is desirable is a method that efficiently handles messages in such situations.
- A method of optimizing a software messaging system is provided. The method in one aspect may comprise autonomously detecting patterns of repeated data in a plurality of messages; generating a plurality of template messages, each of said plurality of template messages containing a different pattern of repeated data detected in said plurality of messages; assigning a correlation identifier to said each template message. Said generating may further include replacing a template message with one determined to have more of commonly repeated data. The method may also include storing said each template message identified by a corresponding correlation identifier.
- The method may further comprise, for each message being communicated, extracting dynamic portion of said each message and generating a field message to contain the dynamic portion; selecting a template message from said plurality of template messages having message content of said each message; associating a correlation identifier identifying said selected template message with said field message; and communicating said field message to a recipient application.
- The method may further comprise, recomposing said each message using said field message and said correlation identifier. The step of recomposing may further include searching recipient application's cache storing a plurality of template messages to select a template message identified by said correlation identifier.
- The method may also comprise notifying said recipient application when there is a change in one or more of the template messages cached in said recipient application's cache.
- Further features as well as the structure and operation of various embodiments are described in detail below with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements.
-
FIG. 1 is a block diagram illustrating message decomposition and recomposition of the present disclosure. - A method for sending smaller messages in which a series of messages largely contain the same content is provided. Using smaller sized messages to communicate exactly the same information as the larger sized predecessor, albeit with an additional indirection, can have a major impact on the achievable message throughput rate and also on the cost of running the application, since network usage is often charged by volume transferred. In addition to the performance gains in terms of bandwidth reduction due to smaller size, there is an additional gain, for free, due to the underlying caching mechanism of typical messaging systems. Messaging systems typically have a memory cache of limited size, beyond which messages must be spilled onto the disk. Accessing disk storage is orders of magnitude slower than direct memory access. By restricting the size of the messages flowing around the system, the cache usage is optimized as well as the network usage.
- A method of the present disclosure in one embodiment enables applications to exchange messages in two parts; a set of “template messages”, which contain the bulk of the data to be exchanged, which only change content infrequently, or which need to be centrally administered for consistency of formats between applications; and the series of “field messages”, which contain the subset of message data which changes for every message. An existing messaging system or software may be augmented to provide such functionality. The scope of usage of the template messages, or the realm of applicability of the template messages, may be the entire messaging system or a logical group of messaging component(s), and is not limited to a single or a set of queue(s), topic(s) or application(s).
-
FIG. 1 is a block diagram illustrating message decomposition and recomposition of the present disclosure. Amessage 102 may be decomposed into two parts, a template message containing content portion of themessage 104 and afield message 106 containing information or attributes related to the message. Template messages may be stored at 108 and field messages may be stored at 110. Thestorage template message store 112 andfield message 114 retrieved from thestore 110. A template message is identified in a field message by a unique identifier. - Consider a series of messages describing a sale of items by auction. The main message may be boilerplate material describing the nature of the sale, the obligations of the seller and buyer, etc., and the only part of the message that changes in each message may be item name, item number, brief description, reserve price, sale price, seller id, buyer id. In this example, the boilerplate material may form a template message; and the item name, item number, brief description, reserve price, sale price, seller id, buyer id may form the field message.
- As another example, consider a series of messages describing training achievements by employees. The main body of each message may include the course name, description, pre-requisites, etc., which can be designated for being a template message. Unique or different parts of the message such as the trainee name, date taken, examination score, etc., would be placed in the field message.
- In one embodiment a sending application may send its set of template messages to a known queue or repository on the messaging system. A set contains one or many. Each template message includes a unique correlation identifier (id). A sending and receiving applications may use an existing pre-defined repository of template messages. The repository of template messages may be shared among applications or global to all applications. An administrator or an application with sufficient authority may add, remove or modify the template messages directly. In order to send the main sequence of messages to the recipient application, the sending application sends
field messages 106, each with a correlation id to match therelevant template message 104. The main message flows around the system are therefore the field messages, which are typically small, thus providing the required optimizations. - In order to rebuild the complete messages, the system browses the queue (or repository or cache memory or like) of template messages to pick up the template messages it needs non-destructively, as well as destructively getting the field messages containing the dynamic data. By examining the correlation id of the field messages, the appropriate template message is looked up, and a known or will be known algorithm is used to insert the contents of the
field messages 114 into the specifiedtemplate message 112 in order to build thecomplete messages 116 for the recipient to use. The method of the present disclosure may be implemented within, or making use of, a current messaging middleware technology, such as IBM's WebSphere MQ™ product. - As an example, the following algorithm or method maybe used to combine field messages with template messages. A sending application decomposes its text-based messages according to a set of named fields listed in the appropriate template message. For each named field, its value is removed from the original message and added to a field message as a name/value pair, i.e., field name and value corresponding to that field. A template message may contain named tags or tokens, typically with special delimiters such as <and>, in the places where the fields would be in the full messages. In recomposing at the destination, the template message is parsed to find the token delimiters, the token name between each pair is read and the token with the value from the field message matching the token name is substituted.
- For example,
- Original message may include:
-
...content... The item Rocking Chair was sold for $405 by Mrs. A Smith. ...content - Template message for the above original message may be:
-
CorrelId=AuctionSale ...content... The item <ItemName> was sold for $<Price> by <Seller>. ...content... - Field message corresponding to the original message then may be:
-
CorrelId=AuctionSale ItemName=Rocking Chair Price=405 Seller= Mrs. A Smith - In another example, a sending application decomposes its data structured messages by comparing a sequence of similar messages to identify those data fields that differ between messages. Those fields that are common to all messages in the sequence are entered into a template message, with named placeholders, typically with a token indicating their location, for the differing fields. These differing fields are put into field messages. The recomposing application replaces the placeholders in a template message with the equivalent fields from the current field message, either by name or simply by sequence order.
- For example,
- Original message may include:
-
Inventing For Beginners This course instructs.... ... Andrea Smith 27 Oct 1998 Pass This qualification... ... - Template message for the original message may be:
-
CorrelId=1295 Inventing For Beginners This course instructs.... ... >Trainee >Date >P/F This qualification... ... - Field message corresponding to the original message may then be:
-
CorrelId=1295 Andrea Smith 27 Oct 1998 Pass - In one embodiment, template messages and field messages are stored on the messaging system's queues, and the receiving application retrieves both the template messages (non-destructively) and the field messages (destructively), and performs the message composition within the bounds of the receiving application.
- In another embodiment, the receiving application may cache the template messages as it gets them. An agent or a process may be deployed to notify the receiving application when template messages change. Upon being notified, the receiving application can clear the template messages from its cache. Rather than having a separate agent or process notify the receiving application of the changes in the template messages, a sender application may send an additional notification message via the messaging system whenever a template message is changed. This scheme significantly improves network bandwidth usage between queues and receiver, and is particularly efficient when template messages change very infrequently.
- Yet in another embodiment, the messaging system may perform the message composition on behalf of the receiving application. In this embodiment, assuming that the messaging system performs the composition on the same computer as the receiving application (i.e., within the receiving client portion of the distributed messaging system), the network bandwidth is similar to the above embodiment. An advantage of this embodiment is that the complexity is removed from the specific application and provided within the generic messaging system. In one embodiment, the algorithm(s) for composing field messages into their template messages are generic so they can be built into the messaging system without knowledge of the specific formats required by applications.
- Still yet in another embodiment, a messaging system composes the messages on the messaging server (i.e., on the computer storing the queues of messages). This has the advantage of keeping the complexity on the server system, allowing centralization of the main messaging processing, and keeping the client software running with the applications as simple and small as possible.
- Another embodiment may have the messaging system perform both message decomposition from full messages sent by a sending application into template messages and field messages, and message recomposition on behalf of the receiving application. In this embodiment, the sending and receiving applications are relatively unaware of the decomposition and recomposition process, in that they send and receive full messages. However, the sending application indicates which templates and/or algorithms the messaging system should use for transmission of its messages. In this embodiment, the method becomes largely an internal optimization process within the messaging system to enable applications to minimize the network bandwidth and storage used by the messages. The caching and template message update methodology described above may be applied within this embodiment.
- In another embodiment, a messaging system exercises autonomous selection of decomposition algorithms. As a series of messages is sent through the system, patterns of repeated data are detected by the system. The repeated data is then extracted into template messages, and subsequent messages following the same patterns have their dynamic data extracted into field messages for forwarding, associated with the relevant template messages for recomposition at the receiving end before delivery to the receiving application.
- Pattern recognition may be as simple as monitoring a sequence of messages flowing from a sending application and comparing their contents, either character by character or, in a structured message, field by field may be used for autonomous selection of decomposition algorithms. As each message is examined, a template message is built up to contain those elements of the messages that are completely common across all messages. During this phase of operation, messages may be sent complete rather than using templates and fields. Once some n messages or predetermined number of messages are detected with a threshold of m % of their content completely common, then that template message is brought into fill use. Any subsequent messages also completely matching that template will have their non-common content extracted into field messages and sent in that form for recomposition with the template message using algorithms such as those described above. During pattern recognition, multiple template messages may be built to match different patterns. An algorithm can be tuned using various thresholds to distinguish between different patterns/templates, to determine when to start and stop using templates, when to replace a template with one with even more common content, etc.
- In one embodiment, template cache management may be implemented by keeping the master copy of all template messages on a queue. The receiving application, when it gets a field message to recompose, looks for the template message with a matching correlation id in its local cache. If it is found, then that template message is used for recomposition. If not, then the template message queue is browsed to find that template message by correlation id, and a copy is placed in the local cache for future use, then recomposition continues.
- If the sending application (or some other template management system) needs to change a template message, then it also sends a notification message to those applications using the template message queue. That notification will identify, by correlation id, the template message that has been changed, and the receiving applications will simply remove that template message from their local caches. Next time that template message is required, the changed copy will be retrieved from the queue since there will not be a cached copy.
- The system and method of the present disclosure may be implemented and run on a general-purpose computer or computer system. The computer system may be any type of known or will be known systems and may typically include a processor, memory device, a storage device, input/output devices, internal buses, and/or a communications interface for communicating with other computer systems in conjunction with communication hardware and software, etc.
- The terms “computer system” and “computer network” as may be used in the present application may include a variety of combinations of fixed and/or portable computer hardware, software, peripherals, and storage devices. The computer system may include a plurality of individual components that are networked or otherwise linked to perform collaboratively, or may include one or more stand-alone components. The hardware and software components of the computer system of the present application may include and may be included within fixed and portable devices such as desktop, laptop, and server. A module may be a component of a device, software, program, or system that implements some “functionality”, which can be embodied as software, hardware, firmware, electronic circuitry, or etc.
- The embodiments described above are illustrative examples and it should not be construed that the present invention is limited to these particular embodiments. Thus, various changes and modifications may be effected by one skilled in the art without departing from the spirit or scope of the invention as defined in the appended claims.
Claims (1)
1. A computer system for optimizing a software messaging system, comprising:
a computer-implemented module operable to autonomously detect patterns of repeated data in a plurality of messages and generate a plurality of template messages, each of said plurality of template messages containing a different pattern of repeated data detected in said plurality of messages, the computer-implemented module further operable to replace a template message with one determined to have more of commonly repeated data, said computer-implemented module further operable to assign a correlation identifier to said each template message;
a computer storage device operable to store said each template message with a corresponding correlation identifier;
a message decomposition module operable, for each message being communicated, to extract dynamic portion of said each message and generate a field message to contain the dynamic portion, the message decomposition module further operable to select a template message from said plurality of template messages having message content of said each message, said message decomposition module further operable to determine a correlation identifier assigned to said selected template message, and communicate said field message to a recipient application with the correlation identifier that matches the selected template message without communicating content of said selected template message;
a message recomposition module operable to receive said field message with the correlation identifier and to recompose using said field message and said correlation identifier, said message recomposition module further operable to search recipient application's cache storing a plurality of template messages to select a template message having said correlation identifier, said message recomposition module further operable to non-destructively retrieve said template message having said correlation identifier and destructively retrieve said field message, said message recomposition module further operable to replace placeholders in said template message with equivalent fields from said field message by sequence order; and
an agent process deployed to notify said recipient application when there is a change in one or more of the template messages cached in said recipient application's cache, said recipient application clearing said one or more of the template messages that have changed from its cache upon being notified,
wherein the computer-implemented module autonomously detects patterns, generates a plurality of template messages, assigns a correlation identifier, and stores said each template message with a corresponding correlation identifier as said each message is being communicated.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/251,920 US20090144357A1 (en) | 2007-11-29 | 2008-10-15 | Use of template messages to optimize a software messaging system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/947,639 US7444596B1 (en) | 2007-11-29 | 2007-11-29 | Use of template messages to optimize a software messaging system |
US12/251,920 US20090144357A1 (en) | 2007-11-29 | 2008-10-15 | Use of template messages to optimize a software messaging system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/947,639 Continuation US7444596B1 (en) | 2007-11-29 | 2007-11-29 | Use of template messages to optimize a software messaging system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20090144357A1 true US20090144357A1 (en) | 2009-06-04 |
Family
ID=39874429
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/947,639 Expired - Fee Related US7444596B1 (en) | 2007-11-29 | 2007-11-29 | Use of template messages to optimize a software messaging system |
US12/251,920 Abandoned US20090144357A1 (en) | 2007-11-29 | 2008-10-15 | Use of template messages to optimize a software messaging system |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/947,639 Expired - Fee Related US7444596B1 (en) | 2007-11-29 | 2007-11-29 | Use of template messages to optimize a software messaging system |
Country Status (1)
Country | Link |
---|---|
US (2) | US7444596B1 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110038422A1 (en) * | 2009-08-14 | 2011-02-17 | Samsung Electronics Co., Ltd. | Video encoding method and apparatus and video decoding method and apparatus, based on hierarchical coded block pattern information |
US20110208820A1 (en) * | 2010-02-12 | 2011-08-25 | International Business Machines Corporation | Method and system for message handling |
US8472521B2 (en) | 2009-08-14 | 2013-06-25 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video, and method and apparatus for decoding video |
US8792737B2 (en) | 2009-08-13 | 2014-07-29 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding and decoding image by using large transformation unit |
US9729481B1 (en) * | 2011-06-30 | 2017-08-08 | Google Inc. | Dynamic formatting of messages for multiple endpoints |
WO2019027549A1 (en) * | 2017-07-31 | 2019-02-07 | Microsoft Technology Licensing, Llc | Smart electronic mail and messaging templates |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101534346B (en) * | 2009-04-13 | 2012-05-23 | 中国网通集团宽带业务应用国家工程实验室有限公司 | Short message template based on short message transmitting method and terminal thereof |
JP5201373B2 (en) * | 2010-06-14 | 2013-06-05 | 日本電気株式会社 | Information processing system, linkage server, information processing method, and information processing program |
US20120215858A1 (en) * | 2011-02-23 | 2012-08-23 | International Business Machines Corporation | Caching potentially repetitive message data in a publish-subscription environment |
CN104252468B (en) | 2013-06-26 | 2019-04-12 | Sap欧洲公司 | For maximizing the method and its system of the information gain of continuous events |
US9374106B2 (en) | 2013-08-28 | 2016-06-21 | International Business Machines Corporation | Efficient context save/restore during hardware decompression of DEFLATE encoded data |
US9800640B2 (en) * | 2013-10-02 | 2017-10-24 | International Business Machines Corporation | Differential encoder with look-ahead synchronization |
CN109246226A (en) * | 2018-09-25 | 2019-01-18 | 行吟信息科技(上海)有限公司 | A kind of method for generating message and device |
Citations (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3483317A (en) * | 1966-06-10 | 1969-12-09 | Xerox Corp | Selective encoding technique for band-width reduction in graphic communication systems |
US5165018A (en) * | 1987-01-05 | 1992-11-17 | Motorola, Inc. | Self-configuration of nodes in a distributed message-based operating system |
US5235695A (en) * | 1989-06-28 | 1993-08-10 | International Business Machines Corporation | Apparatus for efficient utilization of removable data recording media |
US5247638A (en) * | 1990-06-18 | 1993-09-21 | Storage Technology Corporation | Apparatus for compressing data in a dynamically mapped virtual data storage subsystem |
US5298895A (en) * | 1990-01-19 | 1994-03-29 | Hewlett-Packard Company | Data compression method and apparatus utilizing an adaptive dictionary |
US5608396A (en) * | 1995-02-28 | 1997-03-04 | International Business Machines Corporation | Efficient Ziv-Lempel LZI data compression system using variable code fields |
US5635931A (en) * | 1994-06-02 | 1997-06-03 | International Business Machines Corporation | System and method for compressing data information |
US5845303A (en) * | 1994-12-06 | 1998-12-01 | Netpodium, Inc. | Document processing using frame-based templates with hierarchical tagging |
US6199082B1 (en) * | 1995-07-17 | 2001-03-06 | Microsoft Corporation | Method for delivering separate design and content in a multimedia publishing system |
US20010046875A1 (en) * | 2000-05-23 | 2001-11-29 | U.S. Philips Corporation. | Radio system and stations for, and method of, multicast communication |
US20020107877A1 (en) * | 1995-10-23 | 2002-08-08 | Douglas L. Whiting | System for backing up files from disk volumes on multiple nodes of a computer network |
US6523102B1 (en) * | 2000-04-14 | 2003-02-18 | Interactive Silicon, Inc. | Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules |
US20030135445A1 (en) * | 2001-01-22 | 2003-07-17 | Herz Frederick S.M. | Stock market prediction using natural language processing |
US20040015717A1 (en) * | 2002-05-28 | 2004-01-22 | Gerard Colas | Method for the reconstitution of messages conveyed by one or more packet-switched transmission networks |
US20040059750A1 (en) * | 1998-07-08 | 2004-03-25 | Required Technologies Inc. | Value-instance-connectivity computer-implemented database |
US20040147247A1 (en) * | 2001-02-07 | 2004-07-29 | Cristian Demetrescu | Compression method, transmitter and receiver for radio data communication |
US20040148303A1 (en) * | 2003-01-24 | 2004-07-29 | Mckay Christopher W.T. | Method of updating data in a compressed data structure |
US20040255209A1 (en) * | 2003-06-10 | 2004-12-16 | Fred Gross | Apparatus and method for compressing redundancy information for embedded memories, including cache memories, of integrated circuits |
US20050203673A1 (en) * | 2000-08-18 | 2005-09-15 | Hassanayn Machlab El-Hajj | Wireless communication framework |
US20050216669A1 (en) * | 2002-12-20 | 2005-09-29 | Data Domain, Inc. | Efficient data storage system |
US6976081B2 (en) * | 2002-01-30 | 2005-12-13 | Motorola, Inc. | Session initiation protocol compression |
US20060041940A1 (en) * | 2004-08-21 | 2006-02-23 | Ko-Cheng Fang | Computer data protecting method |
US20060240805A1 (en) * | 2004-11-22 | 2006-10-26 | Seven Networks International Oy | E-mail messaging to/from a mobile terminal |
US20070055929A1 (en) * | 2005-09-08 | 2007-03-08 | Hewlett-Packard Development Company, L.P. | Templates for variable data printing |
US20070100866A1 (en) * | 2005-10-31 | 2007-05-03 | International Business Machines Corporation | Method for registering a template message, generating an update message, regenerating and providing an application request, computer arrangement, computer program and computer program product |
US7257693B2 (en) * | 2004-01-15 | 2007-08-14 | Intel Corporation | Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system |
US20070220027A1 (en) * | 2006-03-17 | 2007-09-20 | Microsoft Corporation | Set-based data importation into an enterprise resource planning system |
US20070245090A1 (en) * | 2006-03-24 | 2007-10-18 | Chris King | Methods and Systems for Caching Content at Multiple Levels |
US20080005265A1 (en) * | 2006-06-30 | 2008-01-03 | Nokia Corporation | Method for automatic parsing of variable data fields from textual report data |
US20080147810A1 (en) * | 2002-11-29 | 2008-06-19 | Grouptivity | Collaboration system and method |
US20080196016A1 (en) * | 2007-02-13 | 2008-08-14 | International Business Machines Corporation | Processing of Expressions |
-
2007
- 2007-11-29 US US11/947,639 patent/US7444596B1/en not_active Expired - Fee Related
-
2008
- 2008-10-15 US US12/251,920 patent/US20090144357A1/en not_active Abandoned
Patent Citations (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3483317A (en) * | 1966-06-10 | 1969-12-09 | Xerox Corp | Selective encoding technique for band-width reduction in graphic communication systems |
US5165018A (en) * | 1987-01-05 | 1992-11-17 | Motorola, Inc. | Self-configuration of nodes in a distributed message-based operating system |
US5235695A (en) * | 1989-06-28 | 1993-08-10 | International Business Machines Corporation | Apparatus for efficient utilization of removable data recording media |
US5298895A (en) * | 1990-01-19 | 1994-03-29 | Hewlett-Packard Company | Data compression method and apparatus utilizing an adaptive dictionary |
US5247638A (en) * | 1990-06-18 | 1993-09-21 | Storage Technology Corporation | Apparatus for compressing data in a dynamically mapped virtual data storage subsystem |
US5635931A (en) * | 1994-06-02 | 1997-06-03 | International Business Machines Corporation | System and method for compressing data information |
US5845303A (en) * | 1994-12-06 | 1998-12-01 | Netpodium, Inc. | Document processing using frame-based templates with hierarchical tagging |
US5608396A (en) * | 1995-02-28 | 1997-03-04 | International Business Machines Corporation | Efficient Ziv-Lempel LZI data compression system using variable code fields |
US6199082B1 (en) * | 1995-07-17 | 2001-03-06 | Microsoft Corporation | Method for delivering separate design and content in a multimedia publishing system |
US20020107877A1 (en) * | 1995-10-23 | 2002-08-08 | Douglas L. Whiting | System for backing up files from disk volumes on multiple nodes of a computer network |
US20040059750A1 (en) * | 1998-07-08 | 2004-03-25 | Required Technologies Inc. | Value-instance-connectivity computer-implemented database |
US6523102B1 (en) * | 2000-04-14 | 2003-02-18 | Interactive Silicon, Inc. | Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules |
US20010046875A1 (en) * | 2000-05-23 | 2001-11-29 | U.S. Philips Corporation. | Radio system and stations for, and method of, multicast communication |
US20050203673A1 (en) * | 2000-08-18 | 2005-09-15 | Hassanayn Machlab El-Hajj | Wireless communication framework |
US20030135445A1 (en) * | 2001-01-22 | 2003-07-17 | Herz Frederick S.M. | Stock market prediction using natural language processing |
US20040147247A1 (en) * | 2001-02-07 | 2004-07-29 | Cristian Demetrescu | Compression method, transmitter and receiver for radio data communication |
US6976081B2 (en) * | 2002-01-30 | 2005-12-13 | Motorola, Inc. | Session initiation protocol compression |
US20040015717A1 (en) * | 2002-05-28 | 2004-01-22 | Gerard Colas | Method for the reconstitution of messages conveyed by one or more packet-switched transmission networks |
US20080147810A1 (en) * | 2002-11-29 | 2008-06-19 | Grouptivity | Collaboration system and method |
US20050216669A1 (en) * | 2002-12-20 | 2005-09-29 | Data Domain, Inc. | Efficient data storage system |
US20040148303A1 (en) * | 2003-01-24 | 2004-07-29 | Mckay Christopher W.T. | Method of updating data in a compressed data structure |
US20040255209A1 (en) * | 2003-06-10 | 2004-12-16 | Fred Gross | Apparatus and method for compressing redundancy information for embedded memories, including cache memories, of integrated circuits |
US7257693B2 (en) * | 2004-01-15 | 2007-08-14 | Intel Corporation | Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system |
US20060041940A1 (en) * | 2004-08-21 | 2006-02-23 | Ko-Cheng Fang | Computer data protecting method |
US20060240805A1 (en) * | 2004-11-22 | 2006-10-26 | Seven Networks International Oy | E-mail messaging to/from a mobile terminal |
US20070055929A1 (en) * | 2005-09-08 | 2007-03-08 | Hewlett-Packard Development Company, L.P. | Templates for variable data printing |
US20070100866A1 (en) * | 2005-10-31 | 2007-05-03 | International Business Machines Corporation | Method for registering a template message, generating an update message, regenerating and providing an application request, computer arrangement, computer program and computer program product |
US20070220027A1 (en) * | 2006-03-17 | 2007-09-20 | Microsoft Corporation | Set-based data importation into an enterprise resource planning system |
US20070245090A1 (en) * | 2006-03-24 | 2007-10-18 | Chris King | Methods and Systems for Caching Content at Multiple Levels |
US20080005265A1 (en) * | 2006-06-30 | 2008-01-03 | Nokia Corporation | Method for automatic parsing of variable data fields from textual report data |
US20080196016A1 (en) * | 2007-02-13 | 2008-08-14 | International Business Machines Corporation | Processing of Expressions |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8792737B2 (en) | 2009-08-13 | 2014-07-29 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding and decoding image by using large transformation unit |
US8842921B2 (en) | 2009-08-13 | 2014-09-23 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding and decoding image by using large transformation unit |
US8798381B2 (en) | 2009-08-13 | 2014-08-05 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding and decoding image by using large transformation unit |
US9307238B2 (en) | 2009-08-14 | 2016-04-05 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video, and method and apparatus for decoding video |
US9313490B2 (en) | 2009-08-14 | 2016-04-12 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video, and method and apparatus for decoding video |
US8472521B2 (en) | 2009-08-14 | 2013-06-25 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video, and method and apparatus for decoding video |
US8842734B2 (en) | 2009-08-14 | 2014-09-23 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video, and method and apparatus for decoding video |
US9521421B2 (en) | 2009-08-14 | 2016-12-13 | Samsung Electronics Co., Ltd. | Video decoding method based on hierarchical coded block pattern information |
US8953682B2 (en) | 2009-08-14 | 2015-02-10 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video, and method and apparatus for decoding video |
US9148665B2 (en) | 2009-08-14 | 2015-09-29 | Samsung Electronics Co., Ltd. | Video encoding method and apparatus and video decoding method and apparatus, based on hierarchical coded block pattern information |
US20110038422A1 (en) * | 2009-08-14 | 2011-02-17 | Samsung Electronics Co., Ltd. | Video encoding method and apparatus and video decoding method and apparatus, based on hierarchical coded block pattern information |
US9313489B2 (en) | 2009-08-14 | 2016-04-12 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video, and method and apparatus for decoding video |
US8526497B2 (en) | 2009-08-14 | 2013-09-03 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video, and method and apparatus for decoding video |
US9374579B2 (en) | 2009-08-14 | 2016-06-21 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video, and method and apparatus for decoding video |
US9426484B2 (en) | 2009-08-14 | 2016-08-23 | Samsung Electronics Co., Ltd. | Video encoding method and apparatus and video decoding method and apparatus, based on transformation index information |
US9451273B2 (en) | 2009-08-14 | 2016-09-20 | Samsung Electronics Co., Ltd. | Video encoding method and apparatus and video decoding method and apparatus, based on transformation index information |
US9467711B2 (en) | 2009-08-14 | 2016-10-11 | Samsung Electronics Co., Ltd. | Video encoding method and apparatus and video decoding method and apparatus, based on hierarchical coded block pattern information and transformation index information |
US20110208820A1 (en) * | 2010-02-12 | 2011-08-25 | International Business Machines Corporation | Method and system for message handling |
US9569285B2 (en) * | 2010-02-12 | 2017-02-14 | International Business Machines Corporation | Method and system for message handling |
US9729481B1 (en) * | 2011-06-30 | 2017-08-08 | Google Inc. | Dynamic formatting of messages for multiple endpoints |
US10038654B1 (en) * | 2011-06-30 | 2018-07-31 | Google Llc | Dynamic formatting of messages for multiple endpoints |
WO2019027549A1 (en) * | 2017-07-31 | 2019-02-07 | Microsoft Technology Licensing, Llc | Smart electronic mail and messaging templates |
US10984186B2 (en) | 2017-07-31 | 2021-04-20 | Microsoft Technology Licensing, Llc | Smart electronic mail and messaging templates |
Also Published As
Publication number | Publication date |
---|---|
US7444596B1 (en) | 2008-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7444596B1 (en) | Use of template messages to optimize a software messaging system | |
US6636855B2 (en) | Method, system, and program for accessing stored procedures in a message broker | |
US7383289B2 (en) | Updating and maintaining data in a multi-system network using asynchronous message transfer | |
US8078504B2 (en) | Method and system for providing order status information using an update status flag | |
CN1609873B (en) | Method, apparatus, and user interface for managing electronic mail and alert messages | |
CN100578495C (en) | Method and system for exposing nested data in a computer-generated document in a transparent manner | |
US20080015882A1 (en) | Method and System for Add-in Module for Obtaining Shipping Information | |
US20140289171A1 (en) | Automatic Event Categorization for Event Ticket Network Systems | |
EP3959643B1 (en) | Property grouping for change detection in distributed storage systems | |
US8090873B1 (en) | Methods and systems for high throughput information refinement | |
US20170147652A1 (en) | Search servers, end devices, and search methods for use in a distributed network | |
CN111694841A (en) | Order mark generation method, device, server and storage medium | |
CN109218385B (en) | Method and device for processing data | |
US9667737B2 (en) | Publisher-assisted, broker-based caching in a publish-subscription environment | |
CN111628859B (en) | Method and device for auditing short message text based on distributed high concurrency condition | |
US20090240727A1 (en) | Data manipulation process method and system | |
US20080154656A1 (en) | Data Collection System with Document Production Capability | |
US8752071B2 (en) | Identifying subscriber data while processing publisher event in transaction | |
US9176645B1 (en) | Manipulating collections of items in a user interface | |
US20040122869A1 (en) | Conflict detection in a distributed system landscape | |
US11055274B2 (en) | Granular change detection in distributed storage systems | |
WO2018216346A1 (en) | Data exchange system, data exchange method, and data exchange program | |
US10652341B2 (en) | Restful interface system for an application | |
US20110179028A1 (en) | Aggregating data from a work queue | |
US20090144296A1 (en) | Web 2.0 system and method for dynamic categorization of heterogeneous and regulated enterprise assets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |