5

我想找出其他方式來做不使用消息隊列的異步觀察者模式。想法和例子大多受歡迎。 :-)(將此視爲頭腦風暴會議)。異步觀察者模式

PS語言偏好取決於您。

回答

1

在Java中,您可以將通知任務提交給一個Executor,該管理器負責管理僅負責處理可觀察事件的所有線程組的單個線程組。你仍然有一個隊列,但傳統意義上的「消息隊列」不是一個通知任務隊列。

1

最明顯和最簡單的方法是開始一個新的線程在主題爲註冊到主題的觀察員中的每一個,並讓這些線程運行觀察者的每個「update()」方法。

一個更復雜的方法是使用一個中間件類作爲總線讓拍攝對象「送事件」給它。這個中間件類將使用幾個線程來調用所有「註冊」的觀察者,但是這開始與經典的觀察者模式不同。無論如何,通過這種方法,您可以防止主體處理線程。

這種方法可以非常靈活地縮放到不同的「種類事件」,其中許多主題和許多觀察者註冊到中間件類用於任意類型的事件。