RabbitMQ代碼第一步


Hello RabbitMQ

終於到了使用.Net連接RabbitMQ的時候了,我們首先新建一個控制台應用程序,在程序包管理控制器中NuGet中下載 RabbitMQ。

Install-Package RabbitMQ.Client
image

 

安裝完成后,就可以着手做一個RabbitMQ的消息發布程序了。首先 using RabbitMQ.Client;

從工廠中拿到實例, 這里的User不建議使用guest,因為guest被設置了回環,也就是僅在本地可以被登陸,在其它的機器在瀏覽器中是無法使用guest賬戶登陸的,當然在config中可以去設置,但是這是沒有好處的

//從工廠中拿到實例 本地host、用戶admin
            var factory = new ConnectionFactory()
            {
                UserName = "admin",
                Password = "admin",
                HostName = "localhost"
            };

有的朋友會說,我沒有賬戶怎么辦? 可以用到上一篇博文說的ctl去創建一個用戶

rabbitmqctl add_user admin admin

然后為admin用戶設置vhost的權限

rabbitmqctl set_permissions admin '.*' '.*' '.*'

回到代碼中,這時候新建一個連接,因為在連接被使用完后需要釋放,所以我們可以使用using包裹起來

//創建連接
using (var connection = factory.CreateConnection())

有了連接這時候就可以創建一個channl(頻道)了

//創建返回一個新的頻道
using (var channel = connection.CreateModel())

下一步是需要指定一個交換機的,但是RabbitMQ有一個默認的交換機,為了方便所以這一步忽略

聲明一個隊列,然后發布一條消息,這時候可以把項目運行起來了

//聲明隊列
channel.QueueDeclare("firstTest", true, false, false, null);
//發布消息
var msg = Encoding.UTF8.GetBytes("Hello RabbitMQ");
channel.BasicPublish(string.Empty, routingKey: "firstTest", basicProperties: null, body: msg);

 

在Web管理工具中就可以看到我們新加的隊列 firstTest,而且有一條消息

image

 

這時候可以寫一個consumer(消費者)客戶端去讀取隊列中的消息

consumer的客戶端不需要發布和創建隊列,也就是除了聲明隊列和發布消息其它都是一致的。所以我們從返回一個新的頻道開始寫起

BasicGet方法返回類型是BasicGetResult,里面有一些基本信息,例如隊列中有多少消息、當前交換機類型、當然還有我們最重要的消息 Body

//獲取消息
var result = channel.BasicGet("firstTest", true);

var msg = Encoding.UTF8.GetString(result.Body);
//打印消息
Console.WriteLine(msg);

 

image

 

image


免責聲明!

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



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