We were looking at MSMQ for persistent ‘push’ server to client communication. 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 online client. The last message was delayed by over 40 minutes as MSMQ worked its way through the undeliverable messages (observed via the MMC). We also use MSMQ for the return path where it works well.
Is there any way to make MSMQ fit this pattern of usage by reducing the amount of time it attempts to connect to an offline host? If not, is there any other queuing product that would be a better fit, or is it roll your own time? Raw throughput is not a priority, but number of outgoing queues and predictability/maximum latency are, as is memory footprint on the clients (which can be fairly old machines).