I have a WCF service with a long running method (all kinds of search and alignment related to biology and weird things).
The code uses RAM and the processor is good for one method call, so it is assumed that too many simultaneous calls just scare him from memory. So really, I would not mind setting MaxConcurrentCalls to 1. (I currently have 3, which is fine).
It bothers me that when a method is called and queued, I would like my client to immediately know that it has been queued. Is it possible?
Or just do not have it in line and react with some error, is this possible?
At least I would like the client to disconnect or disconnect, I would like it to NOT be processed, is this possible? (I think that if it expires, it may not actually be processed, but if I give it as 6 requests at the same time, then close all clients, it seems that it starts - in general - all 6 requests. I shortened the timeout, and I think that he may NOT have run all 6, I will have to investigate more)
I just don’t want the client to rotate for 3 minutes (our timeout — which only ever comes if the situation is queued), and then after 3 minutes of processing the timeout. I would prefer that he just find out that the queue is full, and immediately ask him to return later, or maybe we can increase our timeout (but then I would like to immediately say "hey, you're in the queue, maybe there will be a little" ) I definitely do not want it to be timing, so the client is waiting and receiving nothing, and it is still being processed on the backend.
I saw some things in the settings for setting net.tcp listenBacklog, but we use a different binding, do we need to switch? Will switching work?