Patent ID: 8135794

Claim:
A method implemented within a computer system that includes one or more processors and memory storing instructions which, when executed by the one or more processors, implement the method for improving the availability and scalability of a messaging application by using a messaging infrastructure to abstract from the messaging application a selection of at least one message transport of a plurality of available message transports for exchanging messages, the messaging infrastructure selecting the at least one message transport based at least in part on one or more end-to-end message delivery assurances provided by the messaging application to the messaging infrastructure during a runtime of the messaging application, the method comprising: at a computing system having a messaging application executed by one or more processors: an act of a messaging infrastructure, which is separate and distinct from a messaging application, receiving one or more instructions from the messaging application during a runtime of the messaging application, the one or more instructions specifying one or more end-to-end message delivery assurances for the messaging infrastructure to use in selecting at least one suitable message transport from among a plurality of distinct message transports, the one or more end-to-end message delivery assurances comprising one or more of: “at least once” message delivery; “at most once” message delivery; “in order sent” message delivery; or session time-to-live; an act of the messaging infrastructure identifying the one or more end-to-end message delivery assurances specified to the messaging infrastructure by the messaging application during runtime, and independent of any message transport selected during development time of the messaging application; an act of the messaging infrastructure evaluating each of the plurality of distinct message transports to determine how well each distinct message transport fulfills the one or more end-to-end message delivery assurances specified by the messaging application; and an act of the messaging infrastructure selecting one of the distinct message transports based at least in part on how well the selected distinct message transport fulfills the one or more end-to-end delivery assurances specified by the messaging application during runtime compared to others of the plurality of distinct message transports, such that selection of the distinct message transport is performed: (i) independently of the messaging application; and (ii) based primarily on how well the one or more end-to-end message delivery assurances identified by the messaging application during runtime are met by the selected distinct message transport, and independent of any message transport selected during development time of the messaging application.