Re: Send Hosts per Send Port?
- From: "Tomas Restrepo \(MVP\)" <tomasr@xxxxxxxx>
- Date: Thu, 26 Jan 2006 17:45:05 -0500
Hi Craig,
> Does anyone know why we can configure the BizTalk Host per Receive
> Location in BizTalk 2004, but can't do the same for individual Send Ports?
> When sending messages from BizTalk, you can only configure the Send Host
> per adapter.
It's one of those pesky assymetries in the model between send ports and
receive ports. The good news is that this has been fixed in BizTalk 2006.
>
> My situation is this: I have two distinct business processes running
> through a single BizTalk server. One is relatively high volume but not
> business critical, and the other is lower volume but very business
> critical. Both use the same Send adapter, which is a custom adapter that
> is basically a proxy to a .NET WebService. Maybe you can see where this
> is going.
>
> Now, the higher volume business process occasionally spikes high enough
> that it causes the adapter in question to start raising "There were not
> enough threads available in the thread pool..." messages from the .NET
> WebRequest class, basically because the ThreadPool is starved and the
> WebRequest checks to make sure that at least two threads are available in
> the pool before performing its operation.
>
> I'm updating the thread pool settings referenced here [1] to increase the
> size of the Thread Pool. However, what I'd really like to do is to
> isolate my two different business processes into their own hosts, so that
> a spike in volume for one process won't cause failures in the second, more
> critical process.
>
> However, I can't seem to configure two different send ports using the same
> adapter to go to different BizTalk Hosts. Does anyone have any
> suggestions? I suppose I could create a new custom adapter that's just
> like my current one, but I'd like to find a better option, if there is
> one.
One option that might alleviate the problem some might be to move it to a
third host. For example, you could have three application hosts: One running
the mission critical process, the second one running the other process, and
the third one running just the send adapter you are using. While not
perfect, it might improve things somewhat...
The second thing to do might be to review your custom adapter to make sure
it does the most efficient use of available threads. The "Writing Effective
Adapters" whitepaper [1] might help a bit in that regard.
[1]
http://msdn.microsoft.com/library/en-us/bts_2004wp/html/be76831f-2304-4dd9-9148-19818ff63dfb.asp
The third thing to do, while it might take some slight work and is a
somewhat ugly solution, might be simply to fool around with your custom
adapter. You already have it, so you could potentially make a minor change
to it and make a separate copy of it in an assembly with a different name,
change the registration in the registry and register it with biztalk using a
different adapter name/prefix. That way you could have the same code but
make it look to biztalk as if you actually had two different adapters, and
then just put them in different hosts and bind each process to one of the
copies.
--
Tomas Restrepo
tomasr@xxxxxxxx
http://www.winterdom.com/
.
- Follow-Ups:
- Re: Send Hosts per Send Port?
- From: Craig Vermeer
- Re: Send Hosts per Send Port?
- References:
- Send Hosts per Send Port?
- From: Craig Vermeer
- Send Hosts per Send Port?
- Prev by Date: Forcing Removal of Assembly/ReceivePort
- Next by Date: pipeline debugging from VS
- Previous by thread: Send Hosts per Send Port?
- Next by thread: Re: Send Hosts per Send Port?
- Index(es):
Relevant Pages
|