RabbitMQ安裝配置和基於EasyNetQ驅動的基礎使用

来源:http://www.cnblogs.com/struggle999/archive/2017/06/05/6937530.html
-Advertisement-
Play Games

一、RabbitMQ基本概念和原理 1.AMQP,即Advanced Message Queuing Protocol,高級消息隊列協議,是應用層協議的一個開放標準,為面向消息的中間件設計。 2.RabbitMQ是一個開源的AMQP實現,伺服器端用Erlang語言編寫。 3.Channel Chan ...


一、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版本)  

      下載地址 http://www.erlang.org/downloads(根據操作系統選擇32還64位)  

  2. 下載安裝rabbitmq-server(我用的是rabbitmq-server-3.6.10版本)

     下載地址 http://www.rabbitmq.com/install-windows.html

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

    

     接下來用啟用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的基本使用

a.項目中安裝EasyNetQ

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

b.  PublishSubscribe

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隊列中。

c.  SendReceive

通過send和receive可以將消息發送到指定隊列。

 

本文博客園地址:http://www.cnblogs.com/struggle999/p/6937530.html 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原作者介紹,在Android上如何運用Anko和Kotlin開發資料庫。 ...
  • 故事背景: 很久很久以前(2017.6.5,文章有其時效性,特別是使用的工具更新換代頻發,請記住這個時間,若已經沒有價值,一切以工具官方文檔為準),下了個mysql版本玩玩,剛好最新是mysql5.7.18,本機是win10、64位系統。大抵步驟分為: 1、下載:以官網(https://www.my ...
  • 這是因為yum安裝了舊版本的GPG key造成的,解決辦法: rpm --import /etc/pki/rpm-gpg/RPM* Header V3 DSA/SHA1 Signature, key ID解決辦法: rpm -ivh vnc-server-4.1.2-14.el5_5.4.i386. ...
  • 在 Linux 操作系統下,幾乎所有的軟體均通過RPM 進行安裝、卸載及管理等操作。RPM 的全稱為Redhat Package Manager ,是由Redhat 公司提出的,用於管理Linux 下軟體包的軟體。Linux 安裝時,除了幾個核心模塊以外,其餘幾乎所有的模塊均通過RPM 完成安裝。R ...
  • 本篇和大家分享的是一個磁碟文件查看系統,嚴格來說是使用NetCore寫的一個Web系統應用,由於NetCore跨平臺特性,我生成了exe的運行包,只需要配置運行電腦ip+埠,即可在瀏覽器中通過IP+埠的方式訪問目標調用上的所有目錄,不錯是所有目錄(如果您有:C,D,E,F盤都可以訪問),當然為了 ...
  • 前言 目前我們做m端時都會用到定位,當用戶第一次打開h5頁面時會啟動gps定位,並結合百度map來查找城市。按照我們的邏輯思路就是gps定位獲取經緯度,傳到後臺調用百度的一個介面查找城市名稱。 1、查詢得到城市名稱,我們根據城市名稱在我們自己的資料庫里再查詢對應的城市id(查詢會很頻繁,可以基於xm ...
  • aspx <asp:TextBox ID="txtKeywords" runat="server" CssClass="keyword" style="width:731%;margin-left:-20em;" placeholder="輸入姓名/手機號/身份證號碼進行搜索" /> <asp:Li ...
  • 1.需要工具 Instsrv.exe(可以給系統安裝和刪除服務) Srvany.exe(可以讓程式以服務的方式運行) 2.運行cmd,輸入註冊服務命令 "instsrv.exe完整路徑" "服務名稱" "srvany.exe完整路徑" D:\instsrv.exe ObjProjcet D:\srv ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...