
Forwarding and Reliable Delivery
An instance that forwards a message does not acknowledge the message to the sender. Only the final destination acknowledges the message. If the sender does not receive an acknowledgement from the destination after a period of time, the sender retries the message.
An instance that performs message forwarding does not need to store forwarded messages. Instead, SQL Server holds messages to be forwarded in memory. The amount of memory available for message forwarding is specified as part of the Service Broker endpoint configuration. This strategy allows efficient, stateless message forwarding. In the event that an instance that performs message forwarding fails, no messages are lost. Each message is always maintained at the sender until the final destination acknowledges the message, as described in Service Broker Communication Protocols.
The management view sys.dm_broker_forwarded_messages contains information about messages that are currently in the process of being forwarded by the instance. An instance does not persist messages in the process of being forwarded; these messages exist only in memory. The instance that sent the message and the instance that receives the message persist the messages. The sending instance does not remove the message until the receiving instance acknowledges receipt of the message.