I need some piece of software that will fulfill the following functions:
1. Give a single endpoint to a client (abstracting it from several service endpoints)
2. Keep a queue of incoming requests
3. Balance load between several service endpoints on several machines
4. Control availability of these endpoints
5. Give client some readable error when the max CPS or max message queue size are reached
6. Give some msg processing time prediction based on queue size and known service endpoint performance
This thing should be .NET-based and WCF-friendly. I think it is some mixture of load-balancer and ESB. Can you please name any existing products (OSS projects) of such a type?