Home Page › Forums › BizTalk 2004 – BizTalk 2010 › Should convert this orchestration to singleton?
- This topic has 4 replies, 1 voice, and was last updated 9 years, 1 month ago by
community-content.
-
AuthorPosts
-
-
September 14, 2006 at 8:12 PM #15692
I have an orchestration sending files to an outside webservice and save the ACK from it, then writes to a log file.
It runs fine but yesterday 3 files were picked up at the same time that cause 3 instances of the orchestration were initiated. Since they all need to write sth to the log file, one instance got suspended, it could not write to log file while other instance is dealing with it. And then i found that Biztalk stopped picking up any files, it's running out of memory. I have to restart the Host instance.
Is it the orchestration cause the "running out of memory" problem? Should i apply singleton pattern to the orchestration? And any good reference to this pattern?
Thanks
-
September 15, 2006 at 11:53 AM #15701
Hello.
A convoy is one way to fix your problem. I have run into a similar issues in the past and used a convoy to correct them.
You are getting OOM with only 3 messages?
The problem you might be seeing is the HTTP Connection Limit defaults to 2 – if I remember correctly. You need to change this setting inside… the BTSSrvc.exe.config file I think. Although, I didn’t think this gave an Out of memory exception though. I think there is a KB about this
I couldn’t find the exact KB, but this one covers OOM issues: http://support.microsoft.com/kb/918643/en-us
Hope this helps.
-
September 17, 2006 at 7:01 PM #15712
I'm not sure the way my understanding of Convoy is correct:
- Convoy is about processing several message in batchs(sequential or concurrent), those messages all contribute to a certain action
- and using correlation to define groups of batch –correlation is the unique property to identify a message or a batch of messages
But in my case, i cannot find a unique property for every file, becasue a single file can be sent twice, e.g., there may two files containing the same PO number, just because we need to do another data extract to update
And a single file will trigger the orchestration instance, it doesn't need to waiting for any other files to continue. The samples i found in MSDN are not my case…..mine seems simpler, but i have no idea how to using convoy to make the orchestration become singleton…
Can anyone clarify Convoy or Singleton Pattern clearer?
Many Thanks
-
September 18, 2006 at 5:29 PM #15722
All in all, a convoy and a singleton are the same thing. A singleton is implemented using a convoy.
There is no reason you need any type of batch or timeout. That’s just a more common scenario.
For a singleton, you’d just have a loop and have it never end. Loop until 1 = 0 or something.
You can use some like Received Port Name rather then message type, assuming everything is on the same port. Or you can create a custom pipeline that added some unique context property. The correlation can be on any promoted property that would unique to your group of messages. You could even use something like PO Exists.
Hope this helps.
-
September 19, 2006 at 4:21 PM #15742
Yes, i used a correlation type of BTS.ReceivePortName, and two loops, one for the main process (1==1), and the inner one is listening for subsequent messages (use a variable to tell if need to get the succesive msg).
And it runs like a charm, i push 10 files at the same time, and they were processed sequentially…cool
Thanks lots
-
-
-
-
AuthorPosts
- The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.