It’s not architectural, but so many people ask, that I decided to have a log entry on the subject. That’s easy:

1.      Add two static IP addresses to your machine. E.g. 100.100.100.5 for MSMQ and 100.100.100.7 for MSMQT. Static is important because Windows will reregister dynamic addresses at each reboot and screw up step 2 results.

2.      Register these IP addresses in DNS with different names. Say, mymsmq for MSMQ and mybts for MSMQT. For reference, this step you do on the domain DNS controller, not on the machine. I know you know, but some people tried the other way.

3.      Install MSMQ (that’s Windows component called “Message Queuing”)

4.      Go to the register an entry “HKLM\SOFTWARE\Microsoft\MSMQ\Parameters”, add entry “BindInterfaceIP” and set its value to IP address you want to dedicate to MSMQ (e.g. 100.100.100.5). This way MSMQ will not try to grab MSMQT IP address (the second one).

5.      Install BizTalk. During setup (configuration) on Message Queuing configuration screen, set the name and IP address you dedicated to MSMQT. E.g. mybts and 100.100.100.7.

6.      Add MSMQT adapter to BizTalk (it have to be done manually, it’s not on by default).

7.      Enjoy.

a.       Send messages to MSMQ with addresses like DIRECT=OS:mymsmq\private$\MSMQQueue

b.      Send messages to MSMQ/T with addresses like DIRECT=OS:mybts\private$\MSMQTQueue