有一天,由於 queue 內的資料量過大,而 worker 來不及消化。我們需要增加 worker 的個數,來加速 queue 的內容。
這時,需要有一個機制,讓 worker 順利取得正確而不重複的資料內容,讓它可以進行資料處理。
不管是 pull 或是 subscript 那一種方式,當多個 consumer 來請求資料時,都必須先註冊,這樣配置器(Dispatch) 才知道有那些資源可以使用。
舉例來說,今天你要發糖果給小朋友,如果小朋友沒有到你面前跟你要糖果,你一定不知道要發給誰。
所以,我們可以得到 dispatch 的特性一,所有相關的 consumer 都必須要進行註冊動作。
public interface IConsumber
{
}
public interface Dispatch<T>
{
public Binding(ConCurrentQueue<T> queue);
public Registor(IConsumber consumber);
}
在分派資源的處理原則,還是保持 FIFO 。
在後面,將會實作三種分派的情境,與一種筆者實作的過的情況。