Multi-Server Environment – Duplicates the process

Home Page Forums BizTalk 2004 – BizTalk 2010 Multi-Server Environment – Duplicates the process

Viewing 1 reply thread
  • Author
    Posts
    • #18120

      Hi Guys,

      I have never used multi-server environment before and am little confused. Here is what happening. We have two BizTalk Application Servers runs on same BizTalk Managment Database and one message box. I have created a host for Receive Handler, Send Handler and Processing. I have created host instance for each server. Now I have six host instances running.

      Receive Handler on Server 1 

      Receive Handler on Server 2

      Send Handler on Server 1

      Send Handler on Server 2

      Processing on Server 1

      Processing on Server 2

      I have all my receive locations running on Host Instance Receive Handler. My process uses the DB2 receive adapter to pick-up the data from DB2 database which runs on Linux Server. I have about 100 DB2 databases to pick-up the data. So, I setup 100 receive locations. When I enable all my locations, it picks up the data from DB2 database twice. When I stop one host instance it picks-up only once. My application Server are not clustered. What I'm looking is to have the host instance running on both servers but work as one run unit. This problem may go away if I cluster the server but I'm not sure how I can cluster them. Any help on resolving this problem would be greatly appreciated.

       

      Thanks,

      Sam

    • #18122

      I don't know about DB2, but is sounds like you are not reading the database in a transactional manner.  ie, both servers are detecting the same data needs to be processed.  With MSSQL, you would use a procedure that set all pending records/jobs to a guid, then read the records with that guid.  The procedure being an implicit transaction.  For distribution across multiple servers you can limit how many records are 'trapped'

      • #18124

        Hi DMWilkson,

        Thanks for the reply. How do we set all pending records/jobs to a guid? Do I have to run the map in Orchestration instead of executing it in Receive Port? I have no idea about implicit transaction, is it a property of receive location? Thanks very much for your help.

        • #18131

          What I was refering to was how you extract pending work from the DB2 database, not a configuration of BizTalk.  The conventional way to do this is to call a procedure that returns one or more jobs to your bts app.  It sounds like you are allowing both servers to see 'pending' work at the same time.  By creating a unique identifier for each call you can trap the queue content so a subsequent call only reads new elements.

          Something like trapguid =: newguid();  update pendingjobs set trapid = trapguid where trapid = null;  select * from pendingjobs where trapid = trapguid;

          There are examples of this in the bts samples sdk. 

           

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