天天看點

Lind.DDD.Events事件總線~自動化注冊

讓大叔興奮的自動化注冊

Redis隻是一種分布式存儲媒體

對于第一版将事件總線放到記憶體的情況來說,使用redis這種存儲媒體确實解決了分布式的事件問題,它可以在更多場合下使用,不用考慮WEB端的負載均衡,不用考慮服務端的存儲壓力,不用考慮并發時的吞吐量,确實,redis是個存儲效率非常高的産物,大叔redis裡的事件的Key采用了目前EventData的名字加上自定義的字首,這樣可以同時在多個項目中使用.

Lind.DDD.Events事件總線~自動化注冊
Lind.DDD.Events事件總線~自動化注冊

結構圖

Lind.DDD.Events事件總線~自動化注冊

主角是SubscribeAll這個方法

對于目前應用程式下的所有DLL進行反射,拿到所有實作了IEventHandler的類型,然後對這麼類型(事件處理程式)進行注冊即可.

核心代碼(Memory版):

對于這種倉儲,在Redis裡事實上是以二進制的格式存儲的,是以要求你的EventData和EventHandler需要标記為可序列化,我經過測試,對于Json序列化的方式,在進行釋出時,不能成功回調"訂閱"的代碼,原因我目前還不清楚,需要大家一起去研究!

Lind.DDD.Events事件總線~自動化注冊

感謝各位的閱讀!

繼續閱讀