# US 8,788,591 B2 · Asynchronous mechanism and message pool

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,788,591 B2
- Document ID: US8788591B2
- Status: Granted
- Kind: B2
- Application number: 10/794,411
- Filed: 2004-03-04
- Published: 2005-02-24
- Granted: 2014-07-22
- Earliest claimed: 2003-03-05
- Applicants: Jianguo Jiang; Yaping Liu; Jingwei Liang; Wei Huang; Shijun Wu
- Inventors: Jianguo Jiang; Yaping Liu; Jingwei Liang; Wei Huang; Shijun Wu
- Web page: https://patentgrep.com/patent/US8788591B2

## CPC

- G06F 9/546: {Message passing systems or structures, e.g. queues}
- H04L 47/2441: relying on flow classification, e.g. using integrated services [IntServ]
- H04L 47/50: Queue scheduling
- H04L 47/521: {Static queue service slot or fixed bandwidth allocation}
- H04L 47/6215: {Individual queue per QOS, rate or priority}
- H04L 49/90: Buffering arrangements
- H04L 49/9036: {Common buffer combined with individual queues}
- H04L 51/214: using selective forwarding
- H04L 51/226: Delivery according to priorities
- H04L 51/23: Reliability checks, e.g. acknowledgments or fault reporting
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Messages are received and retained in memory and are batch processed including transferring the messages to a cell pool having cells of predetermined size. The location and size of the messages are recorded in a table map with other pertinent information as is required. Messages in the cell pool are processed and delivered asynchronously.

## Claims

### Claim 1

A method for processing messages, comprising:
receiving a plurality of messages into a message processing system, wherein the plurality of messages includes a first message;
determining a protocol lag time period, wherein the protocol lag time period defines the time period in which an acknowledgement signal is returned to a sender of the first message;
storing the received messages in first memory locations of the message processing system during the protocol lag time period;
determining the protocol lag time period has expired;
selecting from the first memory locations, in response to the expiration of the protocol lag time period, stored complete received messages;
batch writing a plurality of the selected messages from the first memory locations to one or more message cells in second memory locations of the message processing system;
recording into a table map, stored in third memory locations of the message processing system, an association between each message and each cell in which the message is written; and
asynchronously transmitting messages from the one or more message cells via a delivery processor, and
wherein failure to complete storing of one or more of the received messages in the first memory locations does not prevent completion of batch writing of the others of the plurality of messages to the one or more message cells.

### Claim 2 (depends on 1)

The method of claim 1, wherein receiving includes acknowledging receipt of the each of the plurality of messages when received.

### Claim 3 (depends on 1)

The method of claim 1, wherein batch writing the one or more messages to cells includes batch writing upon receipt of a trigger.

### Claim 4 (depends on 3)

The method of claim 3, wherein receiving a trigger includes determining that a predetermined amount of time has passed.

### Claim 5 (depends on 4)

The method of claim 4, wherein determining that a predetermined amount of time has passed includes determining the predetermined amount of time has passed since a previous batch write operation.

### Claim 6 (depends on 3)

The method of claim 3, wherein receiving a trigger includes determining that a protocol time lag has expired for a first message received in the plurality of messages.

### Claim 7 (depends on 6)

The method of claim 6, wherein receiving a trigger includes determining that a predetermined time period has expired.

### Claim 8 (depends on 3)

The method of claim 3, wherein:
receiving a trigger occurs before receiving an entire message such that a portion of one message is received; and
batch writing the one or more messages to cells includes writing the portion of the one message such that the portion is written to the cells prior to receiving the entire message.

### Claim 9 (depends on 1)

The method of claim 1, wherein:
batch writing a plurality of the selected messages from_the first memory location to one or more message cells includes writing a group of cells as a file and not writing each message as a separate file.

### Claim 10 (depends on 1)

The method of claim 1, wherein:
receiving a plurality of messages includes receiving the one or more messages in an order of receipt; and
asynchronously delivering the one or more messages includes delivering the one or more messages in the order of receipt.

### Claim 11 (depends on 1)

The method of claim 1, wherein
receiving the plurality of messages includes receiving the one or more messages in an order of receipt, and
wherein asynchronously delivering the one or more messages includes delivering the plurality of messages in an order different from the order of receipt.

### Claim 12 (depends on 1)

The method of claim 1, further comprising processing the messages in the cells for delivery including writing the one or more messages to one or more queues.

### Claim 13 (depends on 12)

The method of claim 12, wherein a priority is assigned to each of the one or more queues and the method further comprises:
determining a priority for each of the one or more messages; and
writing the one or more messages to the one or more queues according to the priority for each of the one or more messages and the priority assigned to each queue.

### Claim 14 (depends on 13)

The method of claim 13, wherein determining a priority for each of the one or more messages includes determining an attribute of the recipient.

### Claim 15 (depends on 13)

The method of claim 13, wherein determining a priority for each of the one or more messages includes determining whether for each of the one or more messages has been a previous delivery attempt.

### Claim 16 (depends on 13)

The method of claim 13, further comprising retrieving a block of messages from the cells for asynchronous delivery, wherein the block of messages includes two or more messages.

### Claim 17 (depends on 1)

The method of claim 1, wherein batch writing the plurality of the selected messages to cells includes writing to cells of a predetermined size.

### Claim 18 (depends on 1)

The method of claim 1, further comprising mapping each of the plurality of messages such that a location of each message in the one or more cells is recorded in a table map.

### Claim 19 (depends on 18)

The method of claim 18 wherein mapping each message includes recording in the table map a size of the message.

### Claim 20 (depends on 18)

The method of claim 18 wherein mapping each message includes recording in the table map whether the cell contains an entire message.

### Claim 21 (depends on 18)

The method of claim 18 wherein mapping each message includes recording in the table map information about processing of the message.

### Claim 22 (depends on 1)

The method of claim 1, further comprising:
receiving a second message as returned from the recipient;
determining that the second message is a returned message; and
storing the returned message in a backup system for processing at a later time.

### Claim 23

A computer implemented system for processing messages, comprising:
a message processor for receiving a plurality of messages including a first message, and for storing said messages into a first memory location, acknowledging received messages and then batching received messages, and for determining a protocol lag time period, wherein the protocol lag time period defines the time period in which an acknowledgement signal is returned to a sender of the first message;
a second memory location having one or more cells of a predetermined size, the message processor operable to write the messages in batches to the second memory location in response to expiration of the protocol lag time period, including storing respective individual messages to the one or more cells depending on a size of a given message; and
a table map stored in a third memory location for recording an association between each message that is stored in the second memory location and each cell in which the message is written,
wherein the message processor is further configured such that failure to complete storing of one or more of the messages to the first location does not prevent completion of batch writing of the others of the plurality of messages to the one or more cells.

### Claim 24 (depends on 23)

The system of claim 23, wherein
the one or more cells have a numeric order, and
wherein the one or more cells are written to in the numeric order of the cells.

### Claim 25 (depends on 23)

The system of claim 23, wherein the one or more cells are each a predetermined size and the size is substantially equal to a size of a majority of messages processed.

### Claim 26 (depends on 23)

The system of claim 23, wherein the one or more cells are sized to store at least 80% of an average message size for messages received by the message receiver.

### Claim 27 (depends on 23)

The system of claim 23, further comprising a delivery processor for delivering the messages to a receiver.

### Claim 28 (depends on 27)

The system of claim 27, further comprising a queue structure of receiving storing messages to be delivered by the delivery processor and extracted from the cells.

### Claim 29 (depends on 28)

The system of claim 28, wherein
the queue structure includes one or more queues and each queue has a priority, and
wherein the delivery processor is configured to access each queue according to the priority of the queue.

### Claim 30 (depends on 23)

The system of claim 23, further comprising a backup data storage for storing files that have not been processed successfully, wherein the delivery processor processes the files that have not been processed successfully.

### Claim 31 (depends on 1)

The method of claim 1, wherein writing of a second of a plurality of messages may be initiated before completion of the writing of a first message of the plurality of messages.

### Claim 32 (depends on 23)

The system of claim 23, wherein the message processor is further configured such that writing of a second of a plurality of messages may be initiated before completion of the writing of a first message of the plurality of messages.

### Claim 33 (depends on 1)

The method of claim 1, wherein the one or more messages may be of any of a plurality of media types.

### Claim 34 (depends on 23)

The system of claim 23, wherein the one or more messages may be of any of a plurality of media types.

### Claim 35

A system for processing messages, comprising:
means for receiving a plurality of messages including a first message;
means for determining a protocol lag time period, wherein the protocol lag time period defines the time period in which an acknowledgement signal is returned to a sender of the first message;
means for storing the received messages in a first memory location during the protocol lag time period;
means for selecting, in response to the expiration of the protocol lag time period, received messages that are stored;
means for batch writing a plurality of the selected messages from the first memory locations to one or more message cells in a second memory location;
means for recording, in a third memory location, an association between each message and each cell in which the message is written; and
means for asynchronously transmitting messages from the one or more message cells,
wherein failure of the storing means to store of one or more of the received messages to the first memory location does not prevent the completion of the batch writing means to write the others of the plurality of messages to the one or more message cells.

### Claim 36

A method for processing messages, comprising:
receiving a plurality of network packets into a message processing system, wherein at least a portion of the network packets are associated with one or more messages, the one or more messages including a first message;
determining a protocol lag time period, wherein the protocol lag time period defines the time period in which an acknowledgement signal is returned to a sender of the first message;
grouping the at least a portion of the network packets into the one or more messages according to the message they are associated with;
determining a completion status of the one or more messages;
storing the one or more messages in first memory locations of the message processing system during the protocol lag time period;
in response to the expiration of the protocol lag time period, selecting from the first memory locations, at least a portion of the one or more messages based, at least in part, on their completion status;
batch writing a plurality of the selected messages from the first memory locations to one or more message cells in second memory locations of the message processing system;
recording into a table map, stored in third memory locations of the message processing system, an association between each message and each cell in which the message is written; and
asynchronously transmitting messages from the one or more message cells via a delivery processor,
wherein failure to complete storing of one or more of the received messages in the first memory locations does not prevent completion of batch writing of the others of the plurality of messages to the one or more message cells.

### Claim 37 (depends on 36)

The method of claim 36, wherein the messages are selected if their completion status indicates the message is complete.

### Claim 38 (depends on 36)

The method of claim 36, further comprising sending acknowledgements for the portion of the network packets associated with messages at the end of the protocol lag.

### Claim 39 (depends on 36)

The method of claim 36, wherein the network packets and the protocol lag are associated with the same protocol.
