學習在.NET Core中使用RabbitMQ之啟動和基礎(一)


前言

今天開始我們正式進入RabbitMQ系列學習,在這系列博客中也會發表.NET Core和EF Core文章,網上關於RabbitMQ例子比比皆是,我將綜合網上所提供的信息並加上我個人的理解來詳細介紹RabbitMQ,歡迎各位大佬指正我這個菜鳥。

RabbitMQ安裝后啟動

關於安裝RabbitMQ就無需我再多言,網上例子比比皆是,這里只是列出在啟動時可能存在的問題,我們從官網上下載並安裝了對應應用程序后,都會有對應的操作快捷方式。

當安裝完畢后,我們首先通過rabbitmqctl status命令來查看服務器狀態。網上的所給服務器狀態失敗情況大部分原因可歸納為兩個如下查看狀態失敗。

我們從上述第二張圖中Current node details下三點可得知node name為rabbitmqcli41@wangpeng,@后面為我們電腦的計算機名稱。而第二點和第三點得知此時Erlang cookie存在於C\Users\JeffckyWang文件目錄下。為解決這個問題我們可首先從兩個方面來快速定位問題,第一:保證C:\Windows和 C\Users\JeffckyWang下的.erlang.cookie要一致,如果不存在那就復制保證二者一致,如果依然不能解決問題,那就啟用第二種方案。默認情況下安裝RabbitMQ后會在服務中存在RabbitMQ,此時RabbitMQ的默認登錄身份為本地賬號,此時可能是賬戶不一致而導致,上述也有講到根據第二張圖中最后節點詳細信息中第二點知,有效的用戶賬戶為JeffckyWang,所以我們修改賬戶為JeffckyWang:

接下來再來運行rabbitmqctl status命令和rabbitmq-plugins enable rabbitmq_management命令啟動RabbitMQ可視化界面。如果運行這兩個命令沒有出錯,那么我們在瀏覽器中輸入地址:http://localhost:15672,默認用戶名和密碼為guest,如下:

RabbitMQ介紹

消息傳遞是一種以可靠和可維護的方式解決不同系統之間通信的技術。我們可以有各種相互之間通信的平台比如Windows服務,基於Java servlet的Web服務,MVC Web應用程序等。消息傳遞旨在整合這些系統,以便它們可以以分離的方式交換信息即分布式。消息總線可能是消息傳遞基礎結構中最重要的組件。它是協調在消息隊列中發送和接收消息的機制。在此之前業界有許多解決消息傳遞的方法:Java消息傳遞服務,MSMQ,IBM MQ,但它們從未真正得到普及,因為基於這些技術的消息系統是復雜的,昂貴的,難以連接並且通常難以使用,而且他們沒有遵循任何特定的消息傳遞標准;即每個供應商都有自己的標准,客戶必須嚴格遵守。在小型項目中我們不需要用到事件總線,我們完全可采用代理調用接口的方式來進行,但是一旦項目大一點這個時候可能就需要考慮事件總線,為什么呢?我們拿常見用戶注冊可能需要用到發送郵件激活,對於當用戶注冊時,用戶提交信息后調用代理接口來發送郵件,但是我們怎么能夠保證代理是實時的呢,或者並發上來代理掛了,那么要發送的消息是不是就丟了呢?這將會造成重大事故,最重要的是這個操作是同步的,只有等發送完郵件回執時我們才能進行下一步操作,整個操作會造成堵塞,我們理想的情況是用戶注冊后,緊接着我們只需要發布一條激活郵件的消息,其他我們就不用再關心,完全不需要等待這個操作完成。

RabbitMQ是基於Erlang編程語言的高可用性開源消息框架。 “高可用性”意味着它在處理消息時不僅非常快速,而且還具有可擴展性。這是一個管理Web UI的服務,我們可以在多個服務器上進行安裝。這些服務器然后作為一組消息代理一同啟動。如果集群中的一台服務器出現故障,其他服務器仍然可以處理傳入的消息。因此,它類似於部署在兩台或更多台Web服務器上的Web應用程序,前端具有負載均衡器。默認情況下,RabbitMQ是實現高級消息隊列協議(AMQP)的高可用性消息傳遞框架,AMQP是一個類似於HTTP的開放標准線級協議。它獨立於任何特定的供應商,獨立於任何特定的供應商這是最重要的一點,AMQP不是公司的專有協議,而是“在應用程序或組織之間傳遞業務信息的開放標准。它連接系統,為業務流程提供所需的信息,並可靠地傳輸實現其目標的指令。

總結

今天我們只是初略介紹了RabbitMQ,接下來我們正式進入RabbitMQ的學習,希望對您有些許幫助同時也能得到大佬們的批評指正,我們下節再會。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM