日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Net Core下使用RabbitMQ比较完备两种方案(虽然代码有点惨淡,不过我会完善)

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Net Core下使用RabbitMQ比较完备两种方案(虽然代码有点惨淡,不过我会完善) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

? ??上篇說給大家來寫C#和Java的方案,最近工作也比較忙,遲到了一些,我先給大家補上C#的方案。

二、使用的插件

? ??HangFire

? ??一個開源的.NET任務調度框架,最大特點在于內置提供集成化的控制臺,方便后臺查看及監控,支持多種存儲方式;在方案中主要使用定時任務做補償機制,后期可能會封裝一些,能通過頁面的形式直接添加任務;

? ?NLog

? ?日志記錄框架,方案中使用記錄日志,后期可能回集成多個日志框架;

? ?Autofac

? ?依賴注入的框架,應該不用做過多介紹;

? SqlSugar

? ORM框架,這個從剛開始我就在使用了,在現在公司沒有推行起來,不過在上兩家公司都留下的遺產,據說還用的可以,當然我還是最佩服作者;

??Polly

? 容錯服務框架,類似于Java下的Hystrix,主要是為了解決分布式系統中,系統之間相互依賴,可能會因為多種因素導致服務不可用的而產生的一套框架,支持服務的超時重試、限流、熔斷器等等;

? RabbitMQ.Client

? 官方提供的C#連接RabbitMQ的SDK;

三、方案

??模擬一個簡單訂單下單的場景,沒有進行具體的實現。同時建議下游服務不要寫在web端,最好以服務的形式奔跑,代碼中是Web端實現的,大家不要這么搞。整體上還是實現了之前提到的兩種方案:一是入庫打標,二是延時隊列(這塊沒有進行很好的測試,但是估計也沒有很大的問題);當然也是有一些特點:RabbitMQ宕機情況下無需重啟服務,網絡異常的情況下也可以進行斷線重連。接下來聊下代碼和各方插件在系統中的具體應用:

? 項目結構:

??

??RabbitMQExtensions:

?

采用Autofac按照單例的形式注入,采用Polly進行斷線重連,也開啟了自身斷線重連和心跳檢測機制,配置方面采用最簡單的URI規范進行配置,有興趣參考下官方,整體上這塊代碼還相對比較規范,以后可能也不會有太多調整;

? OrderDal

? SqlSugar的一些簡單封裝,有些小特點:大家可以可以通過配置來實現讀寫分離,采用倉儲設計。如果不太喜歡這么寫,也可以參考杰哥的做法

??OrderCommon

? 定義全局異常的中間件,還有包含一些用到的實體等等,這部分代碼還可優化拆分一下;

??OrderService

? 生產者和消費者的具體實現,這塊我還想在改造一番,將消費和業務分割開,現在寫的很凌亂,不建議這么寫,先把代碼放出來,看看大家贊同不贊同我的這些用法,可以討論,也歡迎爭論,雖然這塊代碼寫的不好,但是其實里面涉及一些RabbitMQ回調函數的用法,也是比較重要的,沒有這些函數也就實現不了我上面說那兩個特點;

//RabbitMQ宕機以后回調
//客戶端這塊大家不要采用遞歸調用恢復鏈接
//具體為什么大家可以測試下,這里留點小疑問哈哈
connection.ConnectionShutdown += OnConnectionShutdown;

//消費端異常以后回調
consumerchannel.CallbackException += OnOnConsumerMessageAndWriteMessageLogException;

? Order

? 具體的調用者,大家應該根據方法名字就能區分出我上面提到的兩種方案的設計;

??HangfireExtensions

??Hangfire定時框架,采用Mysql作為持久層的存儲,寫的也比較清晰,后期就是針對這些進行擴展,實現在界面就能添加定時任務;

四、結束

??生產端和消費端這段代碼寫的凌亂,希望大家不要介意這一點,是有原因的,這里我就不說了。希望大家看到閃光點,不要在一點上糾結;下次會加入Elasticsearch和監控部分的時候我會把這塊代碼改掉,還大家一片整潔的世界;

? Github地址:https://github.com/wangtongzhou520/rabbitmq.git? 有什么問題大家可以問我;

??歡迎大家加群438836709!歡迎大家關注我!

原文地址:https://www.cnblogs.com/wtzbk/p/10908601.html

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?


總結

以上是生活随笔為你收集整理的Net Core下使用RabbitMQ比较完备两种方案(虽然代码有点惨淡,不过我会完善)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。