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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET 使用 RabbitMQ 图文简介

發布時間:2023/12/4 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET 使用 RabbitMQ 图文简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?前言

最近項目要使用RabbitMQ,園里里面已經有很多優秀的文章,Rabbitmq官網也有.net實例。這里我嘗試下圖文并茂之形式記錄下使用的過程。

安裝

RabbitMQ是建立在erlang OTP平臺下,因此在windows下需要下載并安裝以下兩個組件:

1.?Erlang OTP For windows

2.?Rabbit MQ Windows Service Install

RabbitMQ一般還需要安裝其基于http的管理平臺插件,這個平臺插件便于我們查看和管理RabbitMQ,可以通過命令行將其啟用:

rabbitmq-plugins enable? rabbitmq_management

之后就可以通過?http://localhost:15672/ 登錄,賬號的密碼和密碼可以使用默認的guest/guest,登錄之后的頁面:

RabbitMq 使用

下圖就是具體的使用流程

其方框中就是Rabbitmq的message broker,我們將上圖按上下方式來解釋:

1. 信息發送端將消息(message)發送到exchange

2. exchange接受消息之后,負責將其路由到具體的隊列中

3. Bindings負責連接exchange和隊列(queue)

4. 消息到達隊列(queue),然后等待被消息接收端處理

5. 消息接收端處理消息

初始化RabbitMQ

現在我們用代碼來demo流程,首先在nuget上獲取RabbitMQ.Client:

然后創建圖中2,3,4步需要的exchange,bingding,queue

string exchangeName = "test.exchange";
string queueName = "test1.queue";
string otherQueueName = "test2.queue";
using (IConnection conn = rabbitMqFactory.CreateConnection())

using (IModel channel = conn.CreateModel()) { ? ?//2 定義一個exchangechannel.ExchangeDeclare(exchangeName, "direct", durable: true, autoDelete: false, arguments: null); ? ?//4 定義兩個queuechannel.QueueDeclare(queueName, durable: true, exclusive: false, autoDelete: false, arguments: null);channel.QueueDeclare(otherQueueName, durable: true, exclusive: false, autoDelete: false, arguments: null); ? ?//3 定義exchange到queue的binding ? ?channel.QueueBind(queueName, exchangeName, routingKey: queueName);channel.QueueBind(otherQueueName, exchangeName, routingKey: otherQueueName); }


創建成功之后可以在rabbit的管理平臺查看:

發送消息

從圖上我們得知消息是發送到rabbitmq的exchange,但可以傳一些消息屬性如routingkey,一下代碼中我們將隊列的名字作為routingkey傳進去:

string exchangeName = "test.exchange";
string queueName = "test1.queue";
string otherQueueName = "test2.queue";
using (IConnection conn = rabbitMqFactory.CreateConnection())
using (IModel channel = conn.CreateModel)) { ?
? ?
var props = channel.CreateBasicProperties();props.Persistent = true; ?
? ?
var msgBody = Encoding.UTF8.GetBytes("Hello, World!"); ? ?
/ /1. 發送消息到exchange ,但加上routingkey ? ?channel.BasicPublish(exchangeName, routingKey: queueName, basicProperties: props, body: msgBody);channel.BasicPublish(exchangeName, routingKey: otherQueueName, basicProperties: props, body: msgBody); }

發送之后可以rabbitmq上看到:

?

接收消息

string queueName = "test1.queue";

string otherQueueName = "test2.queue";
using (IConnection conn = rabbitMqFactory.CreateConnection())
using (IModel channel = conn.CreateModel()) { ? ?//5. 從test1.queue 隊列獲取消息BasicGetResult msgResponse = channel.BasicGet(queueName, noAck: true); ?
?
string msgBody = Encoding.UTF8.GetString(msgResponse.Body); ? ?
//5. 從test2.queue 隊列獲取消息msgResponse = channel.BasicGet(otherQueueName, noAck: true);msgBody = Encoding.UTF8.GetString(msgResponse.Body);}

?總結

通過以上的簡述我們對rabbitmq的使用就有了大概的了解

相關文章:?

  • .Net使用RabbitMQ詳解

  • 體驗Rabbitmq強大的【優先級隊列】之輕松面對現實業務場景

  • RabbitMQ消息隊列應用

  • RabbitMQ 高可用集群搭建及電商平臺使用經驗總結

原文地址:http://www.cnblogs.com/julyluo/p/6262553.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

總結

以上是生活随笔為你收集整理的.NET 使用 RabbitMQ 图文简介的全部內容,希望文章能夠幫你解決所遇到的問題。

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