基于Masstransit实现Eventbus的功能
Masstransit?是一個(gè)非常優(yōu)秀的基于消息進(jìn)行通信的分布式應(yīng)用程序框架,詳情參考官網(wǎng)。
在介紹AA.ServiceBus之前,先介紹下幾個(gè)概念.
分布式
分布式系統(tǒng)如何定義?這里引用一下Distributed Systems Concepts and Design(Third Edition)中的一句話:"A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messages"(分布式系統(tǒng)是指位于聯(lián)網(wǎng)計(jì)算機(jī)上的組件僅通過(guò)傳遞消息來(lái)通信和協(xié)調(diào)其操作的系統(tǒng))。從這句話里面我們可以看到幾個(gè)重點(diǎn):
1、組件分布在網(wǎng)絡(luò)計(jì)算機(jī)上
2、組件之間僅僅通過(guò)消息傳遞來(lái)通信并協(xié)調(diào)行動(dòng)
嚴(yán)格講,同一個(gè)分布式系統(tǒng)中的計(jì)算機(jī)在空間部署上是可以隨意分布的,這些計(jì)算機(jī)可能被放在不同的機(jī)柜上,也可能在不同的機(jī)房中,甚至分布在不同的城市。
?中間件
中間件是介于操作系統(tǒng)和在其上運(yùn)行的應(yīng)用程序之間的軟件。中間件實(shí)質(zhì)上充當(dāng)隱藏轉(zhuǎn)換層,實(shí)現(xiàn)了分布式應(yīng)用程序的通信和數(shù)據(jù)管理。它有時(shí)被稱(chēng)為管道,因?yàn)樗鼘蓚€(gè)應(yīng)用程序連接在一起,使數(shù)據(jù)和數(shù)據(jù)庫(kù)可在“管道”間輕松傳遞。參考Azure
常見(jiàn)的中間件比如:遠(yuǎn)程過(guò)程調(diào)用中間件,消息中間件,數(shù)據(jù)庫(kù)訪問(wèn)中間。?
消息中間件
Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems.?
面向消息的中間件(MOM)是支持在分布式系統(tǒng)之間發(fā)送和接收消息的軟件或硬件基礎(chǔ)設(shè)施?
AA.ServiceBus 介紹
AA.ServiceBus?是基于MassTransit的消息中間件,提供點(diǎn)對(duì)點(diǎn)和發(fā)布訂閱的通信方式。這兩個(gè)之間的區(qū)別:
??端點(diǎn)對(duì)端點(diǎn)通信?該消息僅處理一次?并且被一個(gè)消費(fèi)者處理。
?例如命名模式?命令告訴服務(wù)做某事,推薦動(dòng)詞-名詞順序的命名風(fēng)格:如提交訂單命令(SubmitOrder)
?發(fā)布訂閱通信?可以被多個(gè)訂閱者進(jìn)行消費(fèi)處理。
例如事件驅(qū)動(dòng)模式?事件意味著某事已經(jīng)發(fā)生了,推薦以名詞-動(dòng)詞(過(guò)去時(shí)態(tài))順序的命名風(fēng)格,表明發(fā)生了某事。示例訂單提交過(guò)了事件?OrderSubmitted
?目前實(shí)現(xiàn)消息中間件有多種方式,參考微服務(wù).NET:容器化應(yīng)用架構(gòu)指南 如圖
AA.ServiceBus 快速開(kāi)始?
? ?實(shí)例我們創(chuàng)建兩個(gè)控制臺(tái)程序生產(chǎn)者、消費(fèi)者分別命名ServiceBus.Producers、ServiceBus.Consumers,然后在創(chuàng)建一個(gè)消息契約類(lèi)庫(kù)命名為ServiceBus.MsgContract?,分別被生產(chǎn)者和消費(fèi)者引用。? ? ?
1.在消息契約類(lèi)庫(kù)中創(chuàng)建兩個(gè)消息 分別是 提交訂單?SubmitOrder?和 訂單已提交OrderSubmitted代碼如下
2.在生產(chǎn)者控制臺(tái)項(xiàng)目中安裝Install-Package AA.ServiceBus -Version 1.0.0,生產(chǎn)者主要對(duì)消息的構(gòu)造然后進(jìn)行發(fā)送或發(fā)布;
?3.在消費(fèi)者控制臺(tái)項(xiàng)目中安裝Install-Package AA.ServiceBus -Version 1.0.0,生產(chǎn)者需要?jiǎng)?chuàng)建對(duì)應(yīng)的消費(fèi)者進(jìn)行處理消息,只需要繼承IConsumer接口即可
運(yùn)行消費(fèi)者和生產(chǎn)者控制臺(tái)?輸出如下:
?
原文:https://www.cnblogs.com/chengtian/p/11239216.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的基于Masstransit实现Eventbus的功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 宣告推出.NET Core 3.0 Pr
- 下一篇: 你可能不知道的Docker资源限制