title: MSMQ, WCF and robustness
body: <p>Not being an expert on MSMQ or WCF, I have read up a fair bit about it and it sounds and looks great.
  I am trying to develop something, eventually but first some theory, which needs to be robust and durable. </p>
  
  <p>MSMQ I guess will be hosted on a seperate server. </p>
  
  <p>There will be 2 WCF services. One for incoming messages and the other for outgoing messages (takes a message, does some internal processing/validation then places it on the outgoing messages queue or maybe sending an email/text message/whatever)</p>
  
  <p>I understand with the right configuration, we can have the system so that it can be transactional (no messages are ever lost) and can be sent exactly once, so no chance of duplication of messages.</p>
  
  <p>The applications/services will be multithreaded to process messages, which there will be hundreds and thousands of them.</p>
  
  <p>BUT during the processing of a message or through the services lifetime, what if the server crashes?  What if the server reboots? What if the service throws an exception for whatever reason? How is it possible to not lose that message but some how to put it back on the queue waiting for it to be processed again?
  Also how is it possible to make sure that the service is robust in such a way that it will spawn itself again?</p>
  
  <p>I'd appreciate any advice and details here. There is quite alot to take in and WCF/MSMQ exposes quite alot of options. </p>