A method in a runtime messaging infrastructure that abstracts a session state storage and send and receive operations for exchanging messages with a partner endpoint over one or more message transports, the method of improving availability and scalability of a messaging application (105; 205) by selecting at least one of the one or more message transports to link with the messaging application at runtime, the method comprising acts of: receiving one or more instructions from the messaging application, specifying the session state storage, wherein a session state is maintained in a pluggable store comprising at least one of a daemon process store, a durable database store, and an application store, wherein the session state storage comprises the pluggable store; receiving one or more instructions from the messaging application, specifying one or more end-to-end delivery assurances to be used in selecting at least one suitable message transport at runtime, without the messaging application specifying the at least one suitable message transport at development time, wherein the one or more end-to-end delivery assurance comprise at least one of the following: at least once message delivery, at most once message delivery, in order sent message delivery, and session time to live; selecting at least one suitable message transport from the one or more available message transports in order to fulfill the one or more end to end message delivery assurances specified in the instructions received from the messaging application; creating a link within the messaging infrastructure between the messaging application and the selected at least one transport for use in exchanging messages between the messaging application and the partner endpoint, wherein the created link comprises a channel, a session state buffer, a protocol, and the pluggable store; and wherein the session state for the channel, the session state buffer, and the protocol are maintained in the pluggable store. receiving one or more instructions from the messaging application, specifying the session state storage, wherein a session state is maintained in a pluggable store comprising at least one of a daemon process store, a durable database store, and an application store, wherein the session state storage comprises the pluggable store; receiving one or more instructions from the messaging application, specifying one or more end-to-end delivery assurances to be used in selecting at least one suitable message transport at runtime, without the messaging application specifying the at least one suitable message transport at development time, wherein the one or more end-to-end delivery assurance comprise at least one of the following: at least once message delivery, at most once message delivery, in order sent message delivery, and session time to live; selecting at least one suitable message transport from the one or more available message transports in order to fulfill the one or more end to end message delivery assurances specified in the instructions received from the messaging application; creating a link within the messaging infrastructure between the messaging application and the selected at least one transport for use in exchanging messages between the messaging application and the partner endpoint, wherein the created link comprises a channel, a session state buffer, a protocol, and the pluggable store; and wherein the session state for the channel, the session state buffer, and the protocol are maintained in the pluggable store.