0
在一個發佈 - 訂閱系統中,每個用戶等待幾種類型的事件,是否有比簡單的交換機更好的處理解決方案?在發佈 - 訂閱系統中處理事件的不同方式有哪些?
假設我們有2個發佈者,Pub1和Pub2; Pub1發送兩種類型的事件Pub1-eventA和Pub1-eventB,與Pub2相同,分別爲Pub2-eventA和Pub2-eventB
另一方面,我們有一個客戶端Sub1訂閱Pub1和Pub2的事件;
你將如何管理在Sub1監聽器中處理這些事件?
這裏一些可能性:
一個監聽器,一個大的開關(難以維持):
Listener{
HandleEvent(event){
if(event.type == Pub1-eventA)
Action1.execute();
if(event.type == Pub1-eventB)
Action2.execute();
if(event.type == Pub2-eventA)
Action3.execute();
if(event.type == Pub2-eventB)
Action4.execute();
}
}
一個偵聽器和一個關聯映射:
各事件類型Map<event-type, Action> ActionMap
Listener{
Action = ActionMap[event-type]
Action.execute();
}
一個聽衆:
ListenerPub1-eventA{ check(event-type); Action1.execute(); }
ListenerPub1-eventB{ check(event-type); Action2.execute(); }
ListenerPub2-eventA{ check(event-type); Action3.execute(); }
ListenerPub2-eventB{ check(event-type); Action4.execute(); }
我想這是最好的解決方案,的確如此;你對聽衆羣體有什麼看法? – codablank