Home Page › Forums › BizTalk 2004 – BizTalk 2010 › Long Running Orchestrations and Receive Ports
- This topic has 4 replies, 1 voice, and was last updated 8 years, 3 months ago by
community-content.
-
AuthorPosts
-
-
January 6, 2009 at 3:20 PM #21478
Hello,
Im really struggling with what I think is a basic concept in BizTalk. All im really looking for here is just a push in the right direction.
Overall I am trying to figure out a good way to deal with processing a lot of records in a database.
Here is my current design:
I have an orchestration which kicks off using a Receive Location. This orchestration then continues in a loop to get one record from the database, processess it , and mark it as processed. If no record is return the orchestration stops.
Im trying to figure out how to prevent another instance of the Orchestration from running. If I have the Receive Location scheduled every 5 mintues, there is a chance more than one Orchestration will run if the first batch has not completed.
I have looked at the Singleton Pattern but as far as I can tell it does not prevent a receieve location from starting another instance of this orchestration.
I have tried a few different ways of storing a value in the database or in a singleton variable to keep track but I end up having to write a lot of extra stuff to make sure its working and doesnt get stuck.
Can anyone shed some light on a good way to do this?
Jeremy Whittington
-
January 6, 2009 at 6:22 PM #21479
In order to create a singleton orchestration use a coorelation set on a property that always has the same value (like the recieve port name).
-
January 7, 2009 at 9:16 AM #21481
How are you getting batches of records, is there any identifier for each batch, if so you can promote that batch number and correlate on it. In this way you will have an orchestration instance for every batch and each of them run independently. You need not worry of the 5 min scheduling issue. Also you guarantee that the same record is not fetched twice by the receive location.
-
January 7, 2009 at 10:23 AM #21482
I have to control the amount of traffic being sent to third party. I would also have to deal with locking issues in the database so that each process does not grab the same data.
I appreciate the suggestion but this is not something that I can do.
-
January 7, 2009 at 12:35 PM #21484
Surely this is a common design issue with BizTalk applications right? Does anyone have an example of how they process records in a database?
-
-
-
-
AuthorPosts
- The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.