I am using an NServiceBus saga to handle a long running business process. I have an MVC 3 application that is accessed from multiple web servers behind a load balancer.
The goal is that I can have the user initiate the process, and I want to be able to determine the state of the saga.
What is the best way to do this? I have a feeling I will need some sort of persistant storage, but I really do not want to have to hit my database a lot as there is the potential of running thousands of this particular saga per hour.
You could build in to your Saga step that when the status changes, it Bus.Sends() the status to another endpoint that updates a cache or PVM your web app could look at. This endpoint could communicate on other channels to the user, such as email. Pushing this off to another endpoint will keep your Saga flowing.