In the case of MSMQ transport, Bus.Send
is always a local action. Message is stored in a local outgoing queue. MSMQ takes care of the reliable transfer between the PCs.
This concept is called store and forward.
If there's a problem with the local outgoing queue (eg queue is full), NServiceBus will throw an exception and it's up to the sending code to retry again.
NServiceBus retries come in at the receiving end, ie. after the message has been successfully received by the recipient.
The bus abstracts the entire end to end communication between sender and receiver.
It all starts with
Bus.Send<MyMessage>()
and ends, often on another PC, with
MyHandler : IHandleMessages<MyMessage>