搜尋
首頁後端開發C#.Net教程RabbitMQ基本概念與原理實例

RabbitMQ基本概念與原理實例

Jun 23, 2017 pm 04:35 PM
rabbitmq基於安裝配置

RabbitMQ基本概念和原則

1.AMQP,即Advanced Message Queuing Protocol,高級訊息佇列協議,是應用層協定的一個開放標準,為面向訊息的中間件設計。

2.RabbitMQ是一個開源的AMQP實現,伺服器端用Erlang語言寫。

3.Channel 

  Channel是我們與RabbitMQ打交道的最重要的一個接口,我們大部分的業務操作是在Channel這個接口中完成的,包括定義Queue、定義Exchange、綁定Queue與Exchange、發布訊息等。

4.Exchange(生產者將訊息傳送到Exchange(交換器),由Exchange將訊息路由到一個或多個Queue中(或丟棄),RabbitMQ常用的Exchange Type有fanout、direct、topic、headers這四種)

#5.Queue(RabbitMQ的內部對象,用於儲存訊息)

6.基本工作原理

 客戶端(生產者) send Message -->Exchange (交換器透過不同的型別將訊息儲存到對應的queue)-->Queue  

 客戶端(消費者)透過訂閱來消費queue中的訊息。

 上述基礎概念整理來自 RabbitMQ基礎概念詳細介紹 

在Windows系統中安裝RabbitMQ

# 1. 下載安裝erlang (我用的是otp_win64_19.3版本)  

      下載位址 (依作業系統選擇32還64位元)  

  2.qserver(依作業系統選擇為我使用的是rabbitmq-server-3.6.10版本)

     下載地址 

     安裝好後,在看裝目錄下看到

    

#接下來用啟用DOS指令a. cd 到sbin目錄下,我的安裝目錄是D:\RabbitMQServer\rabbitmq_server-3.6.10\sbin, 輸入D: 回車,cd  RabbitMQServer\rabbitmq_server-3.6 .10\sbin

 b. 查看安裝是否成功指令:

rabbitmqctl status

# c.安裝管理外掛指令:

rabbitmq-plugins enable rabbitmq_management

##安裝成功,在瀏覽器中輸入 http:/ /127.0.0.1:15672/

 

#輸入來賓帳號guest 密碼guest ,成功登陸進來,是不是有點激動。

 guest 帳號是管理員帳號,可以新增Exchanges,Queues,Admin。但我們通常不使用guest帳號,繼續用指令來新增帳號和權限。

d:新增使用者:

rabbitmqctl.bat add_user username password

 

e:新增「超級管理員」角色: rabbitmqctl.bat set_user_tags username administrator

 

mymq帳號也是超級管理員了,Can access virtual hosts :No access ,可以看到還沒有能夠存取的虛擬機,接下來新增虛擬機。

f: 新增虛擬機器:  rabbitmqctl add_vhost vhostName

### myvhost虛擬機器並沒有Users,接下來給虛擬機器綁定帳號。 ######g:設定虛擬機器與使用者權限:###rabbitmqctl set_permissions -p 虛擬機器名稱帳號名稱".*" ".*" ".*"########## ## #######h:處於習慣我一般刪除掉guest帳號:###rabbitmqctl.bat delete_user username######

 好了,重新登陸管理頁面,一切正常,接下來開始實戰了。

EasyNetQ的基本使用

專案中安裝EasyNetQ

EasyNetQ是依賴RabbitMQ.Client的,所以會被一併安裝到專案中。

Publish發布訊息

 

#Model有Queue的特性,定義Queue名稱和Exchange名稱。然後直接用Publish方法把Msg透過Model指定的交換器推送到指定佇列去。

運行程式碼,看看MQ的管理頁面。

 已經建立了Model指定的交換器TestQueue.Exchange, Type:topic , Features:D 。 D:Durable 說明預設建立的交換器是持久化的。

 因為還沒有訂閱訊息,所以在Queues中還看不到對應的佇列。

 Subscribe訂閱訊息

  

 為什麼要套在訂閱碼上套用一個while(true)了? 是為了把控制台程式模擬成Windows服務,因為控制台程式運行一閃而過,沒辦法真正訂閱到MQ的訊息。

 實際開發中,一般用Topself來把控制台程式發佈成Windows服務,後面有時間再寫一篇關於Topself的學習部落格。

 再重複剛才的Publish操作,測試下整個流程。

 

自訂Topic

#這樣訊息會被傳送到名稱為Test.開頭的所有Queue隊列中。

SendReceive

透過send和receive可以將訊息傳送到指定佇列。

 

#

以上是RabbitMQ基本概念與原理實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
C#和.NET運行時:它們如何一起工作C#和.NET運行時:它們如何一起工作Apr 19, 2025 am 12:04 AM

C#和.NET運行時緊密合作,賦予開發者高效、強大且跨平台的開發能力。 1)C#是一種類型安全且面向對象的編程語言,旨在與.NET框架無縫集成。 2).NET運行時管理C#代碼的執行,提供垃圾回收、類型安全等服務,確保高效和跨平台運行。

C#.NET開發:入門的初學者指南C#.NET開發:入門的初學者指南Apr 18, 2025 am 12:17 AM

要開始C#.NET開發,你需要:1.了解C#的基礎知識和.NET框架的核心概念;2.掌握變量、數據類型、控制結構、函數和類的基本概念;3.學習C#的高級特性,如LINQ和異步編程;4.熟悉常見錯誤的調試技巧和性能優化方法。通過這些步驟,你可以逐步深入C#.NET的世界,並編寫高效的應用程序。

c#和.net:了解兩者之間的關係c#和.net:了解兩者之間的關係Apr 17, 2025 am 12:07 AM

C#和.NET的關係是密不可分的,但它們不是一回事。 C#是一門編程語言,而.NET是一個開發平台。 C#用於編寫代碼,編譯成.NET的中間語言(IL),由.NET運行時(CLR)執行。

c#.net的持續相關性:查看當前用法c#.net的持續相關性:查看當前用法Apr 16, 2025 am 12:07 AM

C#.NET依然重要,因為它提供了強大的工具和庫,支持多種應用開發。 1)C#結合.NET框架,使開發高效便捷。 2)C#的類型安全和垃圾回收機制增強了其優勢。 3).NET提供跨平台運行環境和豐富的API,提升了開發靈活性。

從網絡到桌面:C#.NET的多功能性從網絡到桌面:C#.NET的多功能性Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C#.NET與未來:適應新技術C#.NET與未來:適應新技術Apr 14, 2025 am 12:06 AM

C#和.NET通過不斷的更新和優化,適應了新興技術的需求。 1)C#9.0和.NET5引入了記錄類型和性能優化。 2).NETCore增強了雲原生和容器化支持。 3)ASP.NETCore與現代Web技術集成。 4)ML.NET支持機器學習和人工智能。 5)異步編程和最佳實踐提升了性能。

c#.net適合您嗎?評估其適用性c#.net適合您嗎?評估其適用性Apr 13, 2025 am 12:03 AM

c#.netissutableforenterprise-levelapplications withemofrosoftecosystemdueToItsStrongTyping,richlibraries,androbustperraries,androbustperformance.however,itmaynotbeidealfoross-platement forment forment forment forvepentment offependment dovelopment toveloperment toveloperment whenrawspeedsportor whenrawspeedseedpolitical politionalitable,

.NET中的C#代碼:探索編程過程.NET中的C#代碼:探索編程過程Apr 12, 2025 am 12:02 AM

C#在.NET中的編程過程包括以下步驟:1)編寫C#代碼,2)編譯為中間語言(IL),3)由.NET運行時(CLR)執行。 C#在.NET中的優勢在於其現代化語法、強大的類型系統和與.NET框架的緊密集成,適用於從桌面應用到Web服務的各種開發場景。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器