Patent ID: 7676580
Filing Date: 2010-03-09
Classification: G06F,H04L

Abstract:
1. In a messaging system that supports one or more message transports, a method of simplifying application development by providing a single programming model that permits specifying one or more end-to-end message delivery assurances that are to be met at runtime, independent of a particular message transport or transports that are used at runtime, as opposed to specifying the particular message transport or transports at development time, the method comprising acts of: defining a message channel interface that abstracts send and receive operations for exchanging messages over one or more message transports available for sending and receiving messages; defining, for use within a single programming model, a plurality of end-to-end message delivery assurances, each of which may be specified at runtime independent of the one or more available message transports, without specifying the one or more available message transports at development time, wherein the plurality of message delivery assurances comprise at least one of at least once message delivery, at most once message delivery, in order sent message delivery, and session time to live; defining, in addition to the plurality of end-to-end message delivery assurances, a plurality of local reliable message features which are individually selectable and customizable, the plurality of local reliable message features being divided into two separate feature categories: a first feature category that includes reliable messaging features that are integral to the programming model including transacted buffering which comprises at least one of consistency, isolation and atomicity semantics for the programming model, and a second feature category that includes reliable messaging features that are configured for customization independent from the programming model including at least one of the following: buffer quota, send timeout, session priority messages and poison message detection threshold; determining that a specific set of assurances and one or more reliable messaging features have been selected for a communication session between a first and a second application, wherein each session established between the first and second applications can implement a variety of different delivery assurances and reliable messaging features at runtime; establishing at least one communication session between the first application and the second application, the communication session including the determined specific set of assurances selected from the plurality of message delivery assurances for the session as well as the selected reliable messaging features, the session further including a session identifier that uniquely identifies the session established between the first and second applications; and assigning a sequence number to the first message sent between the first and second applications during the session such that each message includes both a session identifier and a sequence number, wherein each message transmitted after the first message is assigned a sequentially higher sequence number, each sequence number uniquely identifying the message sent between the first and second applications, such that where multiple established communication sessions exist between the first application and the second application, assurances are provided that each message is received and that the messages belong to the intended communication session.