tags:

views:

420

answers:

3

Hi there, I have a scenario where I need a desktop console app to communicate with a Windows Azure Queue... the most important thing is that the message is received by the server eventually. Also, the desktop app may be disconnected from the Internet sometimes. In the traditional WCF+MSMQ approach you'd be able to send a message which would be cached in MSMQ until MSMQ could reach the Server's MSMQ and send the message. What's the equivalent when Windows Azure is the server-side?

Is it possible for the same approach to be used, where MSMQ just communicates with a Windows Azure Queue rather than an MSMQ on a Windows Server?

Maybe Windows Azure Queue is the wrong approach? I have heard about something called message buffer, but don't know what this is (yet!).

thanks for your help

Kris

A: 

In order to queue a message to Azure Queue Storage you have to be connected to the Internet. If you want to handle disconnected scenarios, that is totally up to you. I would keep the solution very simple and use a local storage such as SQL Server Compact and then send the messages as soon as there's connectivity, maybe with the aid of a Windows Service (so that you don't need to run the desktop app).

Dario Solera
hmmm that's a shame in a way, as it's all achieved out-of-the-box with WCF and MSMQ.
Boomerangertanger
A: 

You can do this with the Azure AppFabric Service Bus Message Buffers - there is no need to use a Queue. Check out the related sample downloads on the following site: http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=5&tabid=11 - they should answer your questions much better than I can.

Regards

Mark Willsher
+1  A: 

You could write an MSMQ listener service that finishes moving the message to the Azure queue when the connection to the internet has been reestablished. I don't think this would be too difficult.

Update Perhaps my answer wasnt clear. Based on the question the client is occasionally connected to the internet so you need a way to park the message until the intertubes get untangled. Using Windows the easiest way to do this is to put the message in an MSMQ local queue. YOu then have a service monitoring that queue. If there is a message and it can get to the service hosted in the cloud it sends the message. Once the message has been sent it can be deleted from the queue.

Jake
hi there, i need to keep it service oriented, rather than message oriented.. i.e., if i were to channel a WCF message payload via msmq and then azure I'm pretty sure this wouldn't be supported in the sense that, the WCF Azure binding is different to the MSMQ binding, so the message payloads for the two channels would be incompatibe. The whole thing would have to be message oriented, which basically means worrying about messages rather than services.I've decided to go down the traditional WCF/MSMQ/IIS7/Win2008 route for this reason and azure cost.
Boomerangertanger
See my update above.
Jake