iT邦幫忙

2022 iThome 鐵人賽

DAY 22
1
自我挑戰組

[Dot Net Core](圖解系列與常用套件)系列 第 22

[Dot Net Core](延伸應用) 22. Event-driven Application - Using Queue to simulate operation

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20220922/20144614AVb0xDJhzK.jpg

於先前小節內容,引用微軟的圖:
https://ithelp.ithome.com.tw/upload/images/20220922/201446141nT44ZWAlw.jpg

https://ithelp.ithome.com.tw/upload/images/20220922/20144614hpVoznpZxX.jpg

說明利用事件驅動應用有很大的好處。事件驅動可以使用觀察者模式進行類似的描述和比較, 一般來說,執行什麼動作和觸發事件同時進行即時通知,可以達到Real Time的效果。

大多數傳統的方法是輪詢,它不斷地讓系統花費資源來獲得要執行的目的。 事件驅動則相反,可以讓系統處於空閒狀態,當真正有需求時,會真正花費系統資源處理,因此可以節省資源,有效利用資源。 未來的系統應該能夠與此概念一起廣泛使用,以實現未來的需求。

我們可以使用Queue來達到即時通知的效果,達到Event-driven Real-Time的目的。

一個簡單的例子用來模擬事件驅動。 首先,我們將使用 Rabbit MQ 來展示,然後使用自製的 Queue 類別來實現。 不管用什麼 Component 來實現,還是要注意發送到 Queue 中的對像是否足夠重要,不會憑空消失,或者斷電斷電後數據是否丟失 恢復了,好像什麼都沒有發生。 您可以通過兩種方式開始:

  1. QUEUE或其他實現的組件具有滿足支持要求的管理模型。
  2. 如果發送對象的過程失敗,可以有重新發送機制。

事實上,上述配套設施都有其複雜性,因此首先提出來考慮。 這裡我們主要展示基本的實現。
簡單的設計概念圖如下:

https://ithelp.ithome.com.tw/upload/images/20220922/20144614W6nHP2mRi4.jpg

RabbitMQ 可以換成其他的 QUEUE,或者其他可以立即通知的組件。

實現一個簡單的 Rabbit MQ 示例,如下:

首先創建一API 放置操作。

https://ithelp.ithome.com.tw/upload/images/20220922/20144614zF6z6jQ8H2.jpg

立即在建立後端接收事件驅動的 Rabbit MQueue。

https://ithelp.ithome.com.tw/upload/images/20220922/20144614Zb1e3wmFFe.jpg

接下來就是實作了,使用HTTP Request發送API,本例依次印出三個數據,後台會立即發現數據發送到Rabbit MQ,觸發相應事件。

這裡的事件是取出後顯示內容。

https://ithelp.ithome.com.tw/upload/images/20220922/20144614UsLFbKH0Yl.jpg

通過Queue進行事件驅動的中介驅動非常簡單方便。 但是,正如前提中提到的,仍然需要考慮匹配。
如果在很簡單的情況下,只想展示一個中間驅動,也可以自己自定義一個組件,然後繼續填寫配套組件。

下面是一個簡單示例,用於演示使用 .NET 模擬 Queue 對象的中介驅動程序。 首先是類別:

https://ithelp.ithome.com.tw/upload/images/20220922/201446145plNUkMDtD.jpg

接著是API:

https://ithelp.ithome.com.tw/upload/images/20220922/20144614qjCyquimXT.jpg

最後是執行情況。 發送到QUEUE後,觸發事件印出訊息。

https://ithelp.ithome.com.tw/upload/images/20220922/20144614uJxmwUIJOm.jpg

https://ithelp.ithome.com.tw/upload/images/20220922/20144614Jv0Ygr9YB6.jpg

通過一個簡單的例子來體驗一下Event-driven是怎麼回事,理解之後還是需要其它適合的配套才能完善整個管理。


上一篇
[Dot Net Core](圖解系列) 21. MediatR - PreProcess and PostProcess
下一篇
[Dot Net Core](圖解系列) 23. AutoMapper - Process of that Registering package into DI
系列文
[Dot Net Core](圖解系列與常用套件)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言