If you are designing a system that uses MSMQ over HTTP then you need to take into account that you can only push messages around the system and not pull them. So you can send from Machine A to Machine B but you can't do a similar remote receive from B to A.
The reason for this is that remote receives always use the RPC protocol even if you are specifying DIRECT=HTTP or DIRECT=HTTPS. The functionality used to be present in Windows XP before service pack 2 but was withdrawn because of the limitations that using RPC imposes:
- Sending over HTTP uses just port 80 but receiving over RPC requires extra ports (135, 2103, 2105) to be opened in firewalls, which isn't going to be inituitive unless you know how remote receives work under the covers.
- Sending over HTTPS will ensure the messages are encrypted/authenticated but receiving over RPC means the data will be in clear text on the wire which would be an unacceptable security breach.
Note - Between Windows 2003 servers (and above), the RPC traffic is encrypted.