I saw an interesting question on the message groups. A customer wished to know how they could implement the following scenario:
Cause an Orchestration to run every 10 minutes. As soon as the orchestration finishes, there should be 10 minutes delay and then the same orchestration runs again. They want to be 100% sure that at most one instance of this orchestration is run at every moment.
I think that there are actually 2 important parts to this query:
- timed intervals
- orchestration uniqueness
A singleton orchestration pattern would be a good fit for the kind of processing to ensure that only one is running at any one time.
Improving Ordered Message Delivery in BizTalk Server 2006 R2 During Concurrent Processing: http://msdn.microsoft.com/en-us/library/bb851740(BTS.10).aspx
FAQ’s for BizTalk orchestrations: http://msdn.microsoft.com/en-us/library/bb418739(BTS.10).aspx
Here is a nice 2 part blog regarding Orchestration performance and part-2 deals specifically with Singletons:
There are several possible ways to kick off an Orchestration in a timed interval:
- Use windows task scheduler to drop a file so that a BizTalk fileadapter will pick it up
- Use a SQL Adapter and have a stored procedure start up the Orchestration via a dummy message
- There is the BizTalk Scheduled Task Adapter which can be found on CodePlex: http://www.codeplex.com/BizTalkScheduledTask (this may be most advantageous for your needs)