Answer in the form: Requirement - Tool
Quartz allows you to run "tasks" in any schedule. It also maintains state between runs, therefore, for some reason, the server drops, when it returns, it knows how to get started. Pretty cool stuff.
A good ServiceBus is worth that weight in gold. Basically, what you want to do is to ensure that all your employees perform only a given operation, since many operations are queued. If you guarantee that your operations idempotent NServiceBus is a great way to accomplish this.
Queue โ Worker 1 + = Worker 2 + = Worker 3 โ Local data storage โ Data queue + Workers โ Remote data storage
Basically, to ensure that the return values โโof these operations are sufficiently isolated from SQL Server, you want to make sure and cache the value somewhere on the local storage system. It could be something fast and non-relational, like RavenDB or something like SQLite. Then you throw some identifier into another queue via NServiceBus and synchronize it with SQL Server, queues are your friend !:-)
You essentially want to ensure that none of your operations are blocking or atomic enough. If you still do not know about TPL, then this is really very powerful stuff! I heard a lot from people from Java, but it's worth mentioning ... C # is becoming a really great language for asynchronous and parallel workflows!
Also, one good thing coming out of the new Async CTP is the TPL DataFlow. I have not used it, but it seems to be right up your alley!
source share