I'm currently outlining the architecture of an SMS messaging integration for a customer. The service will expose an external (Internet facing) interface for receiving messages (which will be used by a third-party service provider) and an internal interface for sending SMS messages.
My current idea is to have a WCF application hosted by IIS in the DMZ that writes incoming messages (from the service provider) to a queue. Then an internal application reads the queue and routes the messages to the proper receiving application on the intranet. The motivation behind this setup is that communication between DMZ and intranet is always initiated from the intranet side, which can beneficial from a security perspective.
I would like to use MSMQ for the queue of incoming messages and have the internal message routing application listen on this queue. But if I do that, will the receive operation really be initiated from the intranet side? What exactly happens when a message is written to a MSMQ queue that has a listener? How is the notification about the message implemented in MSMQ?