RabbitMQ在.NetCore中的使用


概述

RabbitMQ是一個開源的AMQP實現,服務器端用Erlang語言編寫,支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用於在分布式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗。

RabbitMQ提供了可靠的消息機制、跟蹤機制和靈活的消息路由,支持消息集群和分布式部署。適用於排隊算法、秒殺活動、消息分發、異步處理、數據同步、處理耗時任務、CQRS等應用場景。

使用

安裝Nuget包

連接


生產者

創建隊列


可以看到除了QueueDeclare之外還有兩種聲明隊列的方法。

QueueDeclareNoWait:無返回值版

QueueDeclarePassive:用來檢查隊列是否存在

發布消息

關閉通道及連接

消費者

定義消費者

接收消息


RabbitMQ采用消息應答機制,即消費者收到一個消息之后,需要發送一個應答,然后RabbitMQ才會將這個消息從隊列中刪除,如果消費者在消費過程中出現異常,斷開連接卻沒有發送應答,那么RabbitMQ會將這個消息重新投遞。
確認消息已被消費

或在啟動消費者時將此參數傳為true即可自動應答

啟動消費者

設置手動應答消息

關閉通道及連接

交換機Exchange

AMQP協議中的核心思想就是生產者和消費者隔離,生產者從不直接將消息發送給隊列。生產者通常不知道是否一個消息會被發送到隊列中,只是將消息發送到一個交換機。先由Exchange來接收,然后Exchange按照特定的策略轉發到Queue進行存儲。同理,消費者也是如此。Exchange 就類似於一個交換機,將各個消息分發到相應的隊列中。

RabbitMQ提供了四種Exchange模式:direct,fanout,topic,header

direct模式:轉發給routeKey完全匹配的隊列,在發布消息時未指定Exchange的情況下使用的rabbitMQ自帶default Exchange即direct模式

fanout模式:Exchange與隊列進行綁定操作,轉發給與之綁定的隊列

topic模式:與routeKey模糊匹配,符號“#”匹配一個或多個詞,符號“*”匹配不多不少一個詞

header模式:使用Headers(鍵值對)來匹配隊列,使用較少

引用

部分資料來源於 曉晨Master
[https://www.cnblogs.com/stulzq/p/7551819.html]


免責聲明!

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



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