如何在服务繁忙时控制WCF服务响应

时间:2017-09-07 08:09:25

标签: wcf web-config queue

我们需要根据客户交付给我们的WSDL服务规范为客户实施WCF服务。我们必须实现该服务,以便它一次只能处理一个请求。使用限制属性很容易配置服务,我们目前正在使用此配置。

<serviceThrottling maxConcurrentCalls="1" maxConcurrentInstances="1" maxConcurrentSessions="1" />

但问题是,如果客户在服务繁忙时发出请求(该过程有时可能需要两个小时的时间来处理),他们的请求将会超时。但IIS / WCF服务仍将请求进入队列。 (这是核心问题!)由于客户的请求超时,他们正在发出新请求,我们最终会多次处理相同的请求。

我需要

  1. 当客户提出请求时立即发送接受202状态,但仍然一直处理一个请求。 (优于)
  2. 不要将请求带到队列中,让请求超时,或立即发送拒绝。 (OK)
  3. 如果我能以某种方式发现运行时

    ,我也可以管理
    1. 队列中有多少个请求? (如果我允许处理多个请求,我可以丢弃在服务繁忙时到达的请求。)
    2. 最初的请求是什么时候? (我可以在一定时间后停止处理来自队列的请求。)

1 个答案:

答案 0 :(得分:0)

我通过允许更多并发调用并在我自己的代码中维护自己的并发队列来解决这个问题。幸运的是,这似乎是有效的,也是消费者的最佳解决方案。

换句话说,业务问题已经解决,但不是我首先尝试的方式。