MSMQ for servers for clients

We looked at MSMQ for a constant push server connection with the client. There can be up to 1000 clients per server.

In one of our tests, we sent a small message to 300 offline clients, and then sent a message to an Internet client. The last message was delayed for more than 40 minutes, as MSMQ paved the way for messages that are not available (monitored via MMC). We also use MSMQ for the return path, where it works well.

Is there a way to get MSMQ to conform to this usage pattern by reducing the amount of time it tries to connect to a standalone host? If not, is there any other product for queues that fits better, or is it rolling its time? Raw bandwidth is not a priority, but the number of outgoing queues and predictability / maximum latency, as well as the amount of memory on clients (which can be quite old machines).

+4
source share
2 answers

Our solution was to programmatically suspend queues on machines that were offline (we already had a UDP message to find out if clients were working) through one of the MSMQ COM management interfaces.

When stopping queues on unknown disconnected hosts, MSMQ spent much less time passing through invalid messages.

It was also a good lesson to apply a little lateral thinking when developing tests to evaluate technology! In general, I would not recommend MSMQ for server to client because of this problem - I would say that client polling would be preferable.

0
source

You can increase productivity by disabling logging and making messages unrecoverable ... if you care, the messages are lost.

A quick fix in a stand-alone scenario could be to increase the number of threads available for the MSMQ that uses the thread for the outbound queue. Each autonomous connection attempt takes some time, blocking the flow. http://technet.microsoft.com/en-us/library/cc957498.aspx Try to throw as many threads as you can.

My peers worked with ActiveMQ and said that they are much more flexible, although they work better. I personally have not worked with him, but I would have looked at him if you are not attached to .Net.

+2
source

All Articles