We have been using MSMQ with NSB for a couple of years. The input into our system, “where the first message comes from” is an existing NON-NSB MSMQ queue. We basically convert anything in one queue, into an NSB message and .Send on the bus. Because MSQM is store and forward, we can this way (the input side only) as In-Memory persistence without an issue.
We are looking at converting to Azure Service Bus transport and I’m wondering if wrapping the .Send to Azure inside my non-NSB msmq transaction and checking the task returned from .Send for exceptions is enough to roll back my MSMQ transaction. I see that some things like data being too large is returned outside of send but in that case I have much more control and insight as to what goes in I don’t care about that issue.
Simplified: Can I recreate the simplicity and the level of recoverability with Azure just by checking the Task returned from .Send(msg) ? Or am I going to have to implement different persistence into my send only endpoint?