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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

NetCore基于EasyNetQ的高级API使用RabbitMq

發布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NetCore基于EasyNetQ的高级API使用RabbitMq 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、消息隊列

?消息隊列作為分布式系統中的重要組件,常用的有MSMQ,RabbitMq,Kafa,ActiveMQ,RocketMQ。至于各種消息隊列的優缺點比較,在這里就不做擴展了,網上資源很多。

?更多內容可參考?消息隊列及常見消息隊列介紹。我在這里選用的是RabbitMq。

官網地址:http://www.rabbitmq.com

安裝和配置:Windows下RabbitMq安裝及配置

二、RabbitMq簡單介紹?

?RabbitMQ是一款基于AMQP(高級消息隊列協議),由Erlang開發的開源消息隊列組件。是一款優秀的消息隊列組件,他由兩部分組成:服務端和客戶端,客戶端支持多種語言的驅動,如:.Net、JAVA、? ?Erlang等。在RabbitMq中首先要弄清楚的概念是 交換機、隊列、綁定。基本的消息通訊步驟就是首先定義ExChange,然后定義隊列,然后綁定交換機和隊列。

?需要明確的一點兒是,發布者在發送消息是,并不是把消息直接發送到隊列中,而是發送到Exchang,然后由交互機根據定義的消息匹配規則,在將消息發送到隊列中。

?Exchange有四種消息消息分發規則:direct,topic,fanout,header。headers 匹配 AMQP 消息的 header 而不是路由鍵,此外 headers 交換器和 direct 交換器完全一致,但性能差很多,目前幾乎用不到了。

?詳細的概念介紹推薦查看:消息隊列之RabbitMq

三、EasyNetQ使用

?Easynetq是一個簡單易用的Rabbitmq Net客戶端。同時支持 NetFramework和NetCore。GitHub地址。它是針對RabbitMq Net客戶端的進一步封裝。關于EasyNetQ的簡單使用推薦教程:EasyNetQ的介紹。

?本文主要介紹基于EasyNeq的高級API的使用。EasyNetQ的作者在核心的IBus接口中盡量避免暴露AMQP中的交換機、隊列、綁定這些概念,使用者即使不去了解這些概念,也能完成消息的發送接收。這相當簡潔,但某些情況下,基于應用場景的需要,我們需要自定義交換機、隊列、綁定這些信息,EasyNetQ允許你這么做,這些都是通過IAdvanceBus接口實現。

3.1 項目裝備

?這里為了演示,首先新建一個項目,包括一個發布者,兩個接收者,一個公共的類庫

安裝EasyNetQ: NuGet>Install-Package EasyNetQ

3.2 簡單封裝

在Common項目里面是針對Easynetq的使用封裝,主要目錄如下

?

?在RabbitMq文件夾下,是針對消息發送接收的簡單封裝。

?首先來看下RabbitMqManage,主要的發送和訂閱操作都在這個類中。其中ISend接口定義了發送消息的規范,SendMessageManage是ISend的實現。IMessageConsume接口定義訂閱規范。

?MesArg 和PushMsg分別是訂閱和發送需用到的參數類。RabbitMQManage是暴露在外的操作類。

?首先看發送的代碼

在EasyNetQ中對于異步發送消息的時候,消息是否送達Broker只需要查看異步發送方法最終執行成功還是失敗,成功就表示消息送達,如果失敗可以將失敗后的消息存入數據庫中,然后用后臺線程輪詢

數據庫表,將失敗后的消息進行重新 發送。這種方式還可以進一步變成消息表,就是先將要發送的消息存入消息表中,然后后臺線程輪詢消息表來進行消息發送。一般這種方式被廣泛用于分布式事務中,

將本地數據庫操作和消息表寫入放入同一個本地事務中,來保證消息發送和本地數據操作的同步成功,因為我的系統中,分布式事務的涉及很少,所以就沒這樣去做,只是簡單的在異步發送的時候監控下

是否發送失敗,然后針對失敗的消息做一個重新發送的機制。這里,推薦大佬的NetCore分布式事務解決方案 CAP?GitHub地址。

?接著看一下消息訂閱接收涉及的代碼

在訂閱中我定義了一個接口,最終業務代碼中,所有的消息訂閱類,都需要繼續此接口

最后,我們來看下對外使用的操作類

這里面主要封裝了消息的發送和訂閱,以及IBus單例的創建。在后續的消息發送和訂閱主要就通過此處來實現。我們看到一開始的類目結構中還有一個RaExMessageHandleJob類,這個類就是一個后臺

循環任務,用來監測數據庫中是否保存了發送失敗的消息,如果有,則將消息取出,嘗試重新發送。在此就不做多的介紹,大家可以根據自己的實際需求來實現。

3.3 發布者

?現在來看一下消息發布者的代碼

?

?主要的發送代碼都在Send類中,其中appsettings.json里面配置了Rabbitmq的連接地址,TestDto只是一個為了方便演示的參數類。

?下面看一下Program里面的代碼

?很簡單的一個發送消息調用。

?然后來看一下Send類中的代碼

3.4 消費者

?首先來看下消費者端的目錄結構

?

其中appsettings.json中配置Rabbitmq的連接信息,Program中只是簡單調用消息訂閱

主要的消息訂閱代碼都在MessageManage文件夾下,MessageManService用于定義消息訂閱類型

Consume文件夾下主要定義了消息的業務處理

可以看到,所有的類都集成自我們定義的接口IMessageConsume。

四、總結

在EasyNetQ中如果需要消費者確認功能,則需要在Rabbitmq的連接配置中設置publisherConfirms=true,這將會開啟自動確認。在使用高級api定義交換機和隊列時可以自己定義多種參數,比如消息是否持久化,消息最大長度等等,具體大家可以去看官方文檔,上面有詳細介紹。Easynetq會自動去捕獲消費異常的消息并將其放入到錯誤隊列中,而且官方提供了重新發送錯誤隊列中消息的方法,當然你也可以自己去監視錯誤列隊,對異常消息進行處理。EasyNetQ里面作者針對消息的發布確認和消費確認都做了封裝。在EasyNetQ中發布消息的時候如果選用的同步發送,只要沒有拋出異常,我們就可以認為任務消息已經正確到達Broker,而異步發送的話需要我們自己去監視Task是否成功 。如果開啟了自動確認,并不需要我們在消息處理的方法體中手動返回ack信息,只要消息被 正確處理就會自動ack。雖然RabbitMq中也有事務消息,但由于性能比較差,并不推薦使用。其實,只要我們能明確消息是否發布成功和消費成功,就將會很容易在這個基礎上擴展出分布式事務的處理。

原文地址:https://www.cnblogs.com/dandan123/p/10097711.html


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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的NetCore基于EasyNetQ的高级API使用RabbitMq的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久一国产 | 成人av在线网址 | 青青青免费在线视频 | 波多野结衣www | 在线观看日本 | 女性爱爱视频 | 神宫寺奈绪一区二区三区 | 美女隐私黄www网站动漫 | 黄色视屏在线免费观看 | 亚洲av色一区二区三区精品 | 天天射狠狠干 | 成年人激情视频 | 色久综合 | 91亚洲网| 精品人妻少妇一区二区三区 | 成人影片在线 | 伊人影视网 | av网址免费观看 | 国产高清视频在线 | 美女福利视频导航 | 久久久久免费视频 | 四虎免费av | 日韩视频精品在线 | 大陆农村乡下av | 欧美日韩在线视频免费 | 久久国产乱 | 麻豆国产尤物av尤物在线观看 | 男生坤坤放进女生坤坤里 | 岛国精品一区 | 精品少妇人妻av免费久久洗澡 | 久久精品久久国产 | 亚洲欧美另类在线视频 | 欧美日韩免费一区二区 | 欧美骚视频 | 日韩一级片免费观看 | 怡红院国产 | 男人天堂网在线 | 亚洲综合天堂 | 亚洲视频欧美视频 | 爱的色放韩国电影 | 有码一区二区三区 | 国产午夜精品在线观看 | 91九色国产视频 | 免费在线观看av网址 | 免费精品无码AV片在线观看黄 | 欧美日韩久久久 | 日韩一区二区毛片 | 一区二区三区免费观看视频 | 女裸全身无奶罩内裤内衣内裤 | 公与妇乱理三级xxx www色 | 中文字幕久久一区 | 国产白丝精品91爽爽久久 | 日韩精品人妻一区二区三区免费 | 成全世界免费高清观看 | а√在线中文网新版地址在线 | 亚洲 欧美 日韩 国产综合 在线 | 一级片亚洲 | 99国产精品久久久久久久成人热 | 欧美女优视频 | 成人在线高清 | 国产100页 | 男人天堂手机在线 | 欧美精品第一页 | 久久精品国产精品亚洲色婷婷 | 欧美99久久精品乱码影视 | 久久国产精彩视频 | 你懂的在线视频网站 | 毛片大全免费 | 欧美在线天堂 | 丝袜老师办公室里做好紧好爽 | 99视频在线免费观看 | 国产99精品 | 九九影视理伦片 | 久久无码专区国产精品s | 91精品一区二区三区在线观看 | 性感美女高潮 | 看一级片 | 中文字幕av资源 | 日韩二区在线观看 | 玩偶姐姐在线观看免费 | 亚洲精品成人无码毛片 | 中文字幕第15页 | 456亚洲视频 | 国产青青草视频 | 日日骚一区 | 韩国色网 | 国产精在线 | 欧美激情在线狂野欧美精品 | 欧美一级免费大片 | 欧美精品一区二区在线观看 | 狠狠干干 | www.国产91 | 色视频在线免费观看 | 国产喷水在线 | 亚洲草逼视频 | 无码人妻精品一区二区三区夜夜嗨 | 亚洲第六页 | 国产精品国产三级国产在线观看 | 欧美激情一二区 |