Message Queuing Solution for Internet Connected, Distributed C # Clients

I am at the initial stage of researching a message queuing solution for C #, and I would appreciate any experience, lessons, military stories, etc. I also have some specific questions about the suitability of MSMQ for our configuration.

In short, we have a distributed architecture: various server events generate work items that are retrieved by our deployed clients. These clients connect to the server, retrieve the work and process it, and then return to "waiting for work."

Some relevant information about these clients:

  • Today we have several hundred client installations, and we must be prepared to grow to tens of thousands over the next 18 months.
  • Clients never send tasks to the server - they only pull.
  • Payloads for customers are <= 1K each.
  • We do not need strong authentication and traffic encryption (although this is a great bonus)
  • Our clients work in various MS operating systems,> = WinXP-SP1. Some of them are part of active Windows directories or Windows domains or ad hoc workgroups.
  • Mostly clients do not work. We want to effectively "wait for work" and then respond to work as quickly as possible (i.e., we want customers to receive a work item as soon as possible after its turn)
  • Sometimes our customers disappear from the Internet from time to time: their machines are turned off for one day or at night, etc. We want work items to come when they are online again. In other words, we need message reliability.
  • We control all client and server code, but not client environments (although our installers do install the necessary software, such as .NET 3.5, if it does not already exist)

So, considering the above - will MSMQ work โ€œnaturallyโ€ for us? I did not find a clear answer to the question of how (or if) MSMQ handles clients who listen to messages when they are not in the domain / active directory and when they connect via the Internet. So far, my reading of MSMQ seems rather "enterprise-oriented" - isnโ€™t our non-manufacturing requirement an MSMQ problem?

What other solutions have you used in the past in these settings?

And, of course, what other questions should I ask ?; -)

Thanks!

+4
source share
2 answers

RabbitMQ sounds like a solution for you.

Rabbitmq

RabbitMQ.NET/WCF library

+3
source

If you are looking at a central server on the Internet with queues containing messages waiting for remote clients to read them, MSMQ is not a product for you (as it pains me to say that). MSMQ cannot output messages over the Internet through HTTP. You will need to open port 135 and use the RPC protocol, and this is not necessarily a great idea on the Internet.

Cheers John Broadwell

+2
source

All Articles