#1
  1. No Profile Picture
    Registered User
    ASP Explorer (0 - 99 posts)

    Join Date
    Jan 2004
    Posts
    2
    Rep Power
    0

    MSMQ and MSMQT side-by-side


    I've installed BTS 2004 Beta (missing out the STS stuff because it wouldn't load that in the Configuration Wizard), and I'm trying to get MSMQ and MSMQT working on the same box.

    I've followed the instructions in the help. I gave the box a new IP address and new server name, which is registered in the DNS.

    I run the Configuration Wizard, and tell the installation to the new IP for MSMQT (MSMQ installs to the primary IP by default right?), and still when I try to start the Message Queue service it bombs if the BizTalk Admin service is running.

    Got any ideas?
  2. #2
  3. No Profile Picture
    Grumpier Old Moderator
    ASP Mastermind (5000+ posts)

    Join Date
    Sep 2003
    Posts
    10,143
    Rep Power
    190
    Maybe a port conflict? I don't use any of this software myself.
  4. #3
  5. No Profile Picture
    Registered User
    ASP Explorer (0 - 99 posts)

    Join Date
    Jan 2004
    Posts
    2
    Rep Power
    0
    Sadly, not a port conflict, they're attached to different IP addresses, or at least they should be after the configuration.
  6. #4
  7. No Profile Picture
    Registered User
    ASP Explorer (0 - 99 posts)

    Join Date
    Sep 2004
    Posts
    1
    Rep Power
    0

    VBScript to configure BizTalk 2004 MSMQT and MSMQ to run side-by-side


    Ran into the same problem the other day. You have to configure the RegKey BindInteface IP for MSMQ to run a side-by-side installation. Also I have added entries to my %WINDIR%\system32\drivers\etc\hosts file (or you can use a DNS if you have access to it) to configure Names for the IP Adresses that are different from the Machine name. Furthermore I use a Microsoft Loopback Adapter for MSMQ since I only use it for local debugging. It might also work if you configure a second IP address on the same Adapter but I haven't tried that. I made a script to change the values of the corresponding Registry settings, you can also look at it for explanation. This is also great if you are using BizTalk Message Queuing with DHCP if you run the script before you start the MSMQ and BizTalk Services.
    Caution: On my machine it still only works if I start the BizTalk Service before the MSMQ Service but then it worked judging from the SendMessageQueue example.
    Caution: The script changes the MSMQ and the MSMQT configuration without notice.

    On first use you have to pass a Hostname for the MSMQT that you configured in DNS or the Hosts file. The script follows. Hope it helps.

    Cheers
    Roman
    http://www.dotmugs.ch/


    '
    ' Version 0.1
    ' Sept. 2004
    romanmathis@hotmail.com
    ' This Script configures MSMQ and BizTalk MSMQT to run in parallel in case
    ' you have a Microsoft Loopback Adapter installed.
    ' MSMQ will use the Loopback Adapter
    ' MSMQT will use the last other Adapter
    ' To install the Loopback manually pick it in "Add New Hardware - Network Adapters".
    ' Note: A similar configuration might also work if you just use two IP Adresses
    ' on the original adapter but this script does not cover it.
    ' Caution: This script is intended for Development Machines only.
    ' Caution: For this solution to work you must still assure that the Services are
    ' loaded in a specific order.
    ' First you must start your BizTalkServer service.
    ' Then you start MSMQ.
    '
    Dim Shell: Set Shell = CreateObject("WScript.Shell")
    Dim REG_BIZTalk: REG_BIZTalk = "HKLM\SOFTWARE\Microsoft\BizTalk Server\3.0\"

    On Error Resume Next
    Dim BizTalkPath: BizTalkPath = Shell.RegRead(REG_BIZTalk & "InstallPath" )

    if Err.Number Then
    WScript.Echo "Biztalk Registry Entry Not Found." & Err.Number
    WScript.Echo Err.Number & ": " & Err.Description
    WScript.Quit 1
    End if

    WScript.Echo "BizTalk installed at:"
    WScript.Echo " " & BizTalkPath

    'Dim objEnv: Set objEnv = Shell.Environment("System")
    ' objEnv("BTSSDKDIR") = BizTalkPath
    ' WScript.Echo "Environment Variable 'BTSSDKDIR' Set to " & objEnv("BTSSDKDIR")
    'End If

    Dim keyBindIP: keyBindIP = "HKLM\SYSTEM\CurrentControlSet\Services\BTSSvc.3.0 \MessageQueuing\MsmqtBindingIP"
    Dim binIP : binIP = Shell.RegRead(keyBindIP)
    If Err.Number Then
    WScript.Echo "Error reading: " & keyBindIP
    WScript.Echo Err.Number & ": " & Err.Description
    End If
    WScript.Echo "BizTalk.MsmqtBindingIP is " & binIP


    Dim keyBindMN: keyBindMN = "HKLM\SYSTEM\CurrentControlSet\Services\BTSSvc.3.0 \MessageQueuing\MsmqtMachineName"
    Dim binMN : binMN = Shell.RegRead(keyBindMN)
    If Err.Number Then
    WScript.Echo "Error reading: " & keyBindIP
    WScript.Echo Err.Number & ": " & Err.Description
    End If
    WScript.Echo "BizTalk.MsmqtMachineName is " & binMN

    if len(binMN) = 0 then
    if WScript.Arguments.Count < 1 then
    WScript.Echo "The MsmqtMachineName is missing. It has to be set in the RegKey or you have to provide it as an argument."
    WScript.Echo "Use a name you configure in DNS or %WINDIR%\System32\drivers\etc\hosts that is for example a subdomain of your computer, i.e. msmqt.yourcomputername"
    WScript.Quit 3
    end if
    end if

    Dim keyMsmqIP: keyMsmqIP = "HKLM\SOFTWARE\Microsoft\MSMQ\Parameters\BindInter faceIP"
    Dim msmqIP : msmqIP = Shell.RegRead(keyMsmqIP)
    If Err.Number Then
    WScript.Echo "Error reading: " & msmqIP
    WScript.Echo Err.Number & ": " & Err.Description
    End If
    WScript.Echo "MSMQ.BindInterfaceIP is " & msmqIP


    WScript.Echo "Finding msloop and other adapter ip"
    Set wbemServices = GetObject("winmgmts:\\.")
    Set wbemObjectSet = wbemServices.InstancesOf("Win32_NetworkAdapterConf iguration")

    Dim msloopAddress: msloopAddress = ""
    Dim otherAddress: otherAddress = ""

    For Each wbemObject In wbemObjectSet
    'WScript.Echo "Win32_NetworkAdapterConfiguration:"
    if wbemObject.ServiceName = "msloop" then
    msloopAddress = wbemObject.IPAddress(0)
    else
    if ub(wbemObject.IPAddress) >= 0 Then
    otherAddress = wbemObject.IPAddress(0)
    End if
    end if
    Next

    WScript.Echo "MS Loopback Adapter IP: " & msloopAddress
    WScript.Echo "Other Adapter IP: " & otherAddress

    if len(msloopAddress) = 0 or len(otherAddress) = 0 then
    WScript.Echo "One of the required IP adresses is missing."
    WScript.Quit 2
    end if

    On Error Goto 0
    WScript.Echo "Writing to registry ..."
    WScript.Echo keyBindMN & " := " & binMN
    Shell.RegWrite keyBindMN, binMN, "REG_SZ"

    WScript.Echo keyBindIP & " := " & otherAddress
    Shell.RegWrite keyBindIP, otherAddress, "REG_SZ"

    WScript.Echo keyMsmqIP & " := " & msloopAddress
    Shell.RegWrite keyMsmqIP, msloopAddress, "REG_SZ"

    function lb(obj)
    On Error Resume Next
    lb = lbound(obj)
    if Err.Number <> 0 then lb = 0
    end function

    function ub(obj)
    On Error Resume Next
    ub = ubound(obj)
    if Err.Number <> 0 then ub = -1
    end function

IMN logo majestic logo threadwatch logo seochat tools logo