Running Multiple Instances of BizTalk

Home Page Forums BizTalk 2004 – BizTalk 2010 Running Multiple Instances of BizTalk

Viewing 1 reply thread
  • Author
    Posts
    • #16985

      We have one computer and one BizTalk licence. Our BizTalk application reads requests from a MQSeries queue, processes the response and writes to another MQSeries queue. A process reads everything that arrives on that queue. I need to find some way to have this BizTalk process running on the same computer to support an Integration and a QA configuration. There is nothing about the messages that can identify which request came from which (INT or QA) and each will attempt to read all messages that arrive on the queue.

      So what I need to do is find some way to run two instances of my code on the same machine. I thought I could create a second host instance and install my code into it. This works for the Orchestrations and Receive ports but the Assemblies and Send Ports do not load into a host instance but some common area that results in the second deploy failing.

      So I install the first instance, change the default host to the second instance I created and do the deploy and it fails with some error message that the assemblies are already deployed.

      I am now trying to compile the project a second time and change the assembly names to see if I can create a second set of compiled code that can coexist with the first but with no success yet.

      Is there any way to have a second set of the same code (with minimal changes) to have multiple instances running at the same time to support multiple groups. In fact we have a Release 1 and Release 2 so I may have to support INT-R1, INT-R2, QA-R1, and QS-R2. This would be four instances of the code running on one box. I mentioned one license so use of Microsoft VirtualPC is out since it has been interpreted that we need a license for each virtual pc. Plus I have not been able to figure out how to address the individual virtual pcs when it comes to setting up the MQ connections from the external servers.

      I would appreciate any ideas anyone has.

    • #16995

      Not really any easy way to do this.  In 2004 or 2006. 

      Have you thought of using Virtual Machines? 

      Not sure how the licensing works, but you might just need a MSDN License for non-production machines or maybe less for VMs.  Again, you’d want to check on this.

      • #17007

        I use Microsoft VirtualPC to maintain separate development environments but in each case, my BizTalk processes do not communicate with any other systems. How do I address the VirtualPC instance is I wanted to have an external development system connect. If you understand MQSeries, I have a running queue manager in my VirtualPC but do not know the TCP/IP address that the external system needs to create a channel.

        I try ipconfig and it gives me an ip address but this does not seem to allow external systems to connect. So even if we address the license issues with virtual machines, not sure how to deal with this problem yet. From what I read on various forums, it is doable but everyone seems to know how and no one seems to document it anywhere. Thank you for the idea though.

        Hmmm, the automatic log in feature does not always seem to work. The post from Anonymous below is from me.

      • #17011

        Ok, not a really easy way of doing this but it is possible? I have been told absolutly this must be done without using virtual machines. It does not matter how difficult it is, does not matter how complex the changes to compoinent names or changes to orchestrations, I MUST find a way to support four environments on a single machine without using virtual machines. Any idea?

        Perhaps even more details.

         We have a WebSphere Application Server running our primary application. This WAS is configured to talk to a queue manager running on UNIX. This queue manager (IBM WebSphere MQ) can handle request/reply where the application send request, saves MsgId and reads the proper response via the Correl Id. If this was all there was too it, I would be fine. But there are two other interfaces where the application on the WAS cannot know if the response is thiers. One process sends request but since there is not a user waiting at a web screen, the sending process ignores any responses, it leave another application to sit there read ANY message that shows and processes it. Since our INT and QT WAS applications are currently being fed by a single BizTalk instance, any response of this type can be read by either. So if the Integration people initiate a request, the QA environment may read the response and process it even though they did not generate it.

        If I had two BizTalk instances, running on two computers or in two virtual machines, each could load the exact same code, talk to two different queue managers. So INT and QT are isolated and when one sends a request, it will go o different BizTalk servers which are configured to talk to their queue manager only. We would have a INT WAS, INT queue manager, and INT BizTalk server. We would have a QT WAS, QT queue manager, and a QT BizTalk server.

        But we have only one BizTalk server and can only run one BizTalk server, no tricks like virtual machines due to license issues. So if I could find a say to deploy our code multiple times on the same server, I could configure each instance to talk to a different queue manager as if they were on different servers. It would be like loading Application A and Application B which is done all the time but in this case, A and B have the same orchestrations, same schema, same assemblies, etc.

        Initally I tried the following.

        Use BizTalkApplicationServer as the default Host Instance. I did a regular deplay and it worked. I then created a second Host Instance, set this up as the default and tried a deploy with no changes. Unfortunatly, the send ports are not associated with a particular Host Instance, receive locations are tied to a Host Instance but send ports are not. Also the various assembles are not associated with a specific Host Instance. So when the second deploy is attempted, I get error messages about assemblies already deployed and the deploy fails.

        Now I am trying to alter the assembly names and just the assembly names. I hope this will allow the assembles, containing the same stuff but with different names to coexist in the mysterious common area that is not part of the Host Instance. I have run into a few errors that I am trying to resolve. Unfortunatly I believe this will also prove to be a dead end.

         I suspect I will have to treat every single step of the configuration path as a different application just as if I were to load a BizTalk application from Company A and a different BizTalk application from Company B. I am afraid this will require renaming most if not all components, make changes to Orchestrations that reference these componetns, and who knows what other changes. So after the Integration testers complete thier tests, I would have to rename everything, make extensive changes to various orchestrations and custom pipelines and then recompile what is basically an entirely different applicaiton. Kinda defeats the purpose of Integration testing if the QT testers get different code. Not to mention Customer Testing and Production each getting a "different" application.

         Figure this is as confusing as my other attempts, hope it kept you entertained at least.

Viewing 1 reply thread
  • The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.