# US 7,613,830 B2 · Reliably transferring queued application messages

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

- Number: US 7,613,830 B2
- Document ID: US7613830B2
- Status: Granted
- Kind: B2
- Application number: 11/009,178
- Filed: 2004-12-10
- Published: 2006-07-27
- Granted: 2009-11-03
- Earliest claimed: 2004-12-10
- Assignees: Microsoft Corporation
- Inventors: Krishnan Srinivasan; Craig Andrew Critchley; Uday Shanker Hegde; Alan S. Geller; David Owen Driver; Richard Douglas Hill; Rodney Thomas Limprecht
- Web page: https://patentgrep.com/patent/US7613830B2

## CPC

- H04L 51/214: using selective forwarding
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

The present invention extends to methods, systems, and computer program products for reliably and securely transferring queued application messages. Application messages are (e.g.,. binary or text) encoded and then encapsulated in transfer messages, enqueue messages, and dequeue responses such that composable protocol elements used in application messages can be reused in the transfer messages, enqueue messages, and dequeue responses. Transfer message headers are encoded and then encapsulated along with encoded application messages such that composable protocol elements used in transfer headers and application messages can be reused in the store and forward messages. Application messages, transfer messages, enqueue messages, dequeue responses, and store and forward messages can all be configured in accordance with the same messaging protocol, such as, for example, Simple Object Access Protocol. Since encapsulated elements are encoded, the encapsulated elements do not interfere with configuration of wrapping messages.

## Claims

### Claim 1

At a computer system that is network connectable along with one or more other computer systems to a network, a method of reliably enqueing a message, the method comprising:
an act of receiving an application message configured in accordance with a messaging protocol, the application message including one or more composable protocol elements selected from the group consisting of addressing, security, reliability, and transaction protocol elements;
an act of encoding the application message into a corresponding encoded application message to obscure the one or more composable protocol elements included in the application message;
an act of reusing the one or more composable protocol elements included in the application message in an enqueue message to configure the enqueue message in accordance with the messaging protocol, the enqueue message identifying a message queue that is to queue the application message;
an act of encapsulating the encoded application message in the enqueue message such that the one or more composable protocol elements encoded in the application message are obscured and do not interfere with reusing the one or more composable protocol elements in the enqueue message;
an act of sending the enqueue message to a queue manager that controls the identified queue such that the application message can be queued for delivery to a receiving computer system; and
an act of receiving an enqueue response from the queue manager.

### Claim 2 (depends on 1)

The method as recited in claim 1, wherein the act of receiving an application message configured in accordance with a messaging protocol comprises an act of a queue channel receiving a subroutine call including the application message.

### Claim 3 (depends on 1)

The method as recited in claim 1, wherein the act of receiving an application message configured in accordance with a messaging protocol comprises an act of receiving a SOAP envelope.

### Claim 4 (depends on 1)

The method as recited in claim 1, wherein the act of encoding the application message into a corresponding encoded application message comprises an act of binary encoding the application message.

### Claim 5 (depends on 4)

The method as recited in claim 4, wherein the act of binary encoding the application message comprises an act of base64 encoding the application message.

### Claim 6 (depends on 1)

The method as recited in claim 1, wherein the act of encoding the application message into a corresponding encoded application message comprises an act of text encoding the application message.

### Claim 7 (depends on 1)

The method as recited in claim 1, wherein the act of encoding the application message into a corresponding encoded application message comprises:
an act of providing the received application message, an encoding type, and a content type as input to a wrapping algorithm; and
an act of receiving an encoded application message as output from the wrapping algorithm.

### Claim 8 (depends on 1)

The method as recited in claim 1, further comprising:
an act of encoding a session identifier along with the application message.

### Claim 9 (depends on 1)

The method as recited in claim 1, wherein the act of configuring an enqueue message in accordance with the messaging protocol comprises an act of configuring a SOAP envelope.

### Claim 10 (depends on 1)

The method as recited in claim 1, wherein the act of configuring an enqueue message in accordance with the messaging protocol comprises an act of configuring the enqueue message to identify a message session corresponding to the application message.

### Claim 11 (depends on 1)

The method as recited in claim 1, wherein the act of reusing the one or more composable protocol elements included in the application message comprises an act of reusing at least one composable protocol element from a SOAP application message.

### Claim 12 (depends on 1)

The method as recited in claim 1, wherein the act of encapsulating the encoded application message in the enqueue message comprises an act of encapsulating an encoded SOAP application message in a SOAP enqueue message.

### Claim 13 (depends on 12)

The method as recited in claim 12, wherein the act of encapsulating an encoded SOAP application message in a SOAP enqueue message comprises an act of including decoding information for decoding the encoded SOAP application message within the SOAP enqueue message.

### Claim 14 (depends on 1)

The method as recited in claim 1, wherein the act of sending the enqueue message to a queue manager that controls the identified queue comprises an act of using an atomic transaction context to coordinate enqueueing the application message with other application state changes.

### Claim 15 (depends on 1)

The method as recited in claim 1, wherein the act of sending the enqueue message to a queue manager that controls the identified queue comprises an act of participating in a two-phase commit.

### Claim 16 (depends on 1)

The method as recited in claim 1, wherein the act of sending the enqueue message to a queue manager that controls the identified queue comprises an act of using a reliable messaging protocol to send the enqueue message.

### Claim 17 (depends on 1)

The method as recited in claim 1, further comprising an act of performing at least one of encrypting and digitally signing the encoded application message prior to encapsulating the application message.

### Claim 18 (depends on 1)

The method as recited in claim 1, further comprising an act of performing at least one of encrypting and digitally signing the enqueue message prior to sending the enqueue message.

### Claim 19 (depends on 1)

The method as recited in claim 1, wherein the act of receiving an enqueue response comprises an act of using a reliable messaging protocol to receive the enqueue response.

### Claim 20 (depends on 1)

The method as recited in claim 1, wherein the act of receiving an enqueue response comprises an act of using an atomic transaction context to coordinate enqueueing the application message with other application state changes.

### Claim 21 (depends on 1)

The method as recited in claim 1, wherein the act of receiving an enqueue response comprises an act of participating in a two-phase commit.

### Claim 22 (depends on 1)

The method as recited in claim 1, wherein the act of receiving an enqueue response comprises an act of receiving an enqueue response that is at least one of: encrypted and digitally signed.

### Claim 23

At a computer system that is network connectable along with one or more other computer systems to a network, a method of reliably transferring a message, the method comprising:
an act of receiving a message available message indicating that an application message, configured in accordance with a messaging protocol, is available for delivery to an application, the application message including one or more composable protocol elements selected from the group consisting of addressing, security, reliability, and transaction protocol elements, the application message being encoded to obscure the one or more composable protocol elements included in the application message;
an act of sending a dequeue message in response to the message available message, the dequeue message indicating that the encoded application message is to be dequeued for delivery to the application;
an act of receiving a dequeue response, the dequeue response configured in accordance with the messaging protocol, the dequeue response encapsulating the encoded application message and reusing the one or more composable protocol elements encoded in the application message such that the one or more encoded composable protocol elements do not interfere with reusing the one or more composable protocol elements in the dequeue response;
an act of decoding the encoded application message into the application message; and
an act of sending the application message to the application.

### Claim 24 (depends on 23)

The method as recited in claim 23, wherein the act of receiving a message available message indicating that an application message is available for delivery comprises an act of a queue listener receiving a message available message.

### Claim 25 (depends on 23)

The method as recited in claim 23, wherein the act of receiving a message available message indicating that an application message is available for delivery comprises an act of receiving a SOAP message available message indicating that a SOAP application message is available for delivery.

### Claim 26 (depends on 23)

The method as recited in claim 23, wherein the act of sending a dequeue message in response to the message available message comprises an act of sending a dequeue message that identifies a message queue and the application message.

### Claim 27 (depends on 23)

The method as recited in claim 23, wherein the act of sending a dequeue message in response to the message available message comprises an act of using an atomic transaction context to coordinate dequeueing the application message with other application state changes.

### Claim 28 (depends on 23)

The method as recited in claim 23, wherein the act of sending a dequeue message in response to the message available message comprises an act of participating in a two-phase commit.

### Claim 29 (depends on 23)

The method as recited in claim 23, wherein the act of sending a dequeue message in response to the message available message comprises an act of using a reliable messaging protocol to send the dequeue message.

### Claim 30 (depends on 23)

The method as recited in claim 23, wherein the act of receiving a dequcue response compnses an act of receiving a SOAP dequeue response that encapsulates an encoded SOAP application message.

### Claim 31 (depends on 23)

The method as recited in claim 23, wherein the act of receiving a dequeue response comprises an act of receiving a dequeue response that includes information for decoding an encoded application message encapsulated within the dequeue response.

### Claim 32 (depends on 23)

The method as recited in claim 23, wherein the act of receiving a dequeue response comprises an act of receiving a SOAP dequcue response that reuses at least one composable protocol element from an encoded SOAP application message encapsulated within the dequeue response.

### Claim 33 (depends on 23)

The method as recited in claim 23, wherein the act of receiving a dequeue response comprises an act of using an atomic transaction context to coordinate dequeueing the application message with other application state changes.

### Claim 34 (depends on 23)

The method as recited in claim 23, wherein the act of receiving a dequeue response comprises an act of participating in a two-phase commit.

### Claim 35 (depends on 23)

The method as recited in claim 23, wherein the act of receiving a dequeue response comprises an act of using a reliable messaging protocol to receive the dequeue response.

### Claim 36 (depends on 23)

The method as recited in claim 23, wherein the act of decoding the encoded application message into the application message comprises an act of decoding a text encoded application message.

### Claim 37 (depends on 23)

The method as recited in claim 23, wherein the act of decoding the encoded application message into the application message comprises an act of decoding a binary encoded application message.

### Claim 38 (depends on 37)

The method as recited in claim 37, wherein the act of decoding a binary encoded application message comprises an act of decoding a base64 encoded application message.

### Claim 39 (depends on 23)

The method as recited in claim 23, wherein the act of decoding the encoded application message into the application message comprises:
an act of providing the encoded application message, an encoding type, and a content type as input to an unwrapping algorithm; and
an act of receiving the application message as output from the unwrapping algorithm.

### Claim 40 (depends on 23)

The method as recited in claim 23, further comprising an act of performing at least one of decrypting and verifying the integrity of the dequeue response.

### Claim 41 (depends on 23)

The method as recited in claim 23, further comprising an act of performing at least one of decrypting and verifying the integrity of the encoded application message prior to decoding the encoded application message.

### Claim 42 (depends on 23)

The method as recited in claim 23, wherein the act of sending the application message to the application comprises an act of sending a SOAP message to the application.

### Claim 43 (depends on 23)

The method as recited in claim 23, further comprising:
an act of sending a wake-up notification to the application prior to delivering the application message to the application.

### Claim 44 (depends on 23)

The method as recited in claim 23, further comprising:
an act of receiving a session available message prior to receiving the message available message, the session available message indicating that message is part of an application session;
an act of sending a session accept message in response to the session available message; and
an act of receiving a session accept response subsequent to sending the session accept message.

### Claim 45 (depends on 23)

The method as recited in claim 23, further comprising:
an act of sending a registration message indicating an interest in messages corresponding to the application, prior to receiving the message available message; and
an act of receiving a registration response indicating that the registration was successful.

### Claim 46

A computer program product for use at a computer system that is network connectable along with one or more other computer systems to a network, the computer program product for implementing a method of reliably enqueing a message, the computer program product comprising one or more computer storage media storing computer-executable instructions, that when executed by a processor, cause the computer system to perform the following:
receive an application message configured in accordance with a messaging protocol, the application message including one or more composable protocol elements selected from the group consisting of addressing, security, reliability, and transaction protocol elements;
encode the application message into a corresponding encoded application message to obscure the one or more composable protocol elements included in the application message;
reuse the one ore more composable protocol elements included in the application message in an enqueue message to configure the enqueue message in accordance with the messaging protocol, the enqueue message identifying a message queue that is to queue the application message;
encapsulate the encoded application message in the enqueue message such that the one or more composable protocol elements encoded in the application message are obscured and do not interfere with reusing the one or more composable protocol elements in the enqueue message;
send the enqueue message to a queue manager that controls the identified queue such that the application message can be queued for delivery to a receiving computer system; and
receive an enqueue response from the queue manager.

### Claim 47

A computer program product for use at a computer system that is network connectable along with one or more other computer systems to a network, the computer program product for implementing a method of reliably transferring a message, the computer program product comprising one or more computer storage media storing computer-executables instructions, that when executed by a processor, cause the computer system to perform the following:
receive a message available message indicating that an application message, configured in accordance with a messaging protocol, is available for delivery to an application, wherein the application message includes one or more composable protocol elements selected from the group consisting of addressing, security, reliability, and transaction protocol elements, and wherein the application message is encoded to obscure the one or more composable protocol elements included in the application message;
send a dequeue message in response to the message available message, the dequeue message indicating that the encoded application message is to be dequeued for delivery to the application, wherein the act of sending the dequeue message uses a reliable messaging protocol and comprises an act of participating in a two-phase commit;
receive a dequeue response, the dequeue response configured in accordance with the messaging protocol, the dequeue response encapsulating the encoded application message and reusing the one or more composable protocol elements encoded in the application message such that the one or more encoded composable protocol elements do not interfere with reusing the one or more composable protocol elements in the dequeue response;
decode the encoded application message into the application message; and
send the application message to the application.
