簡體   English   中英

C#WCF Web服務中的排隊工作量

[英]Queueing workload in C# WCF web service

我有一個處理某些輸入的慢速功能。 白天,該函數被多次調用時,會出現高峰時間。 我不希望這在消費者方面造成滯后。 因此,與其讓此函數完成工作然后返回true,我不希望該函數將輸入添加到隊列中然后返回true。 然后,我希望隊列在后台處理,直到隊列為空。

您能告訴我用C#做到這一點的最佳方法嗎?

這是我已經開始使用的一些示例代碼:

namespace WCFServiceWebRole1
{
    public class Service1 : IService1
    {
        public bool SlowFunction(string input)
        {
            // Here is a slow function that processes input...
            return true;
        }

    }
}

namespace WCFServiceWebRole1
{
    public class Service1 : IService1
    {
        public bool SlowFunction(string input)
        {
            AddToQueue(input);
            return true;
        }
    }
}

您可以在System.Collections.Concurrent命名空間中使用ConcurrentQueue類。 這是其在MSDN上的描述的鏈接。 實現生產者-消費者隊列模式將非常容易。

SlowFunction方法在類上調用Enqueue ,然后讓System.Timers.Timer對象定期運行執行TryDequeue的方法。 如果您有一些非常奇怪的用例,則可以選擇使用System.Threading.Timer或計划的任務來調用另一個服務調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM