tags:

views:

143

answers:

1

I have two applications, let us call them A and B. Currently A uses WCF to send messages to B. A doesn't need a response and B never sends messages back to A.

Unfortunately, there is a flaky network connection between the servers A and B are running on. This results in A getting timeout errors from time to time.

I would like to use WCF+MSMQ as a buffer between the two applications. That way if B goes down temporarily, or is otherwise inaccessible, the messages are not lost.

From an architectural standpoint, how should I configure this?

+2  A: 

I think you might have inflated your question a bit with the inclusion of the word "architectural".

If you truly need an architectural overview of this issue from that high of a level, including SLA concerns, your SL will be as good as your MSMQ deployment, so if you are concerned about SL, just look at the documentation on the internet about MSMQ and SLA.

If you are looking more for the actual implementation from a code standpoint, this article is excellent: http://code.msdn.microsoft.com/msmqpluswcf

It goes over a lot of the things you'll need to know, including how to setup MSMQ and how to implement chunking to get around MSMQ's 4MB limit (if this is necessary... I hope it's not).

Here's a good article about creating a durable and transactional queue that will cross machines using an MSMQ cluster: http://www.devx.com/enterprise/Article/39015/1954

Anderson Imes
4 MB? I can't imagine trying to shove a message that large through the pipes. At that point I say just dump it to the file system and send a URL instead.
Jonathan Allen
You'd be surprised how common it is in crazy business processes, especially ones that are based on files and are being converted to web services. Most of the time a good session and multiple calls is all you need, but some folks don't know this. I personally have always avoided it, but it's good to know.
Anderson Imes