.NET Core 下使用 RabbitMQ
介紹
RabbitMQ是一個開源的,基于AMQP(Advanced Message Queuing Protocol)協議的完整,可復用的企業級消息隊列(Message Queue 一種應用程序與應用程序之間的一種通信方法)系統,RabbitMQ可以實現點對點,發布訂閱等消息處理模式
官網:https://www.rabbitmq.com/dotnet.html
開源地址:https://github.com/rabbitmq/rabbitmq-dotnet-client
安裝
docker下安裝 RabbitMQ
其他平臺安裝 RabbitMQ:https://www.rabbitmq.com/download.html
為了開發方便,我在docker中安裝了RabbitMQ,RabbitMQ安裝完成后,默認端口打開地址為:http://localhost:15672,輸入默認賬號密碼,guest/guest,可以看到RabbitMQ UI界面。
快速開始
接下來我們用RabbitMQ來完成一個比較常見的生產者和消費者模式的代碼,新建兩個控制臺項目,RabbitMQConsumer和RabbitMQProducer。
分別在兩個項目中安裝組件
Install-Package RabbitMQ.Client在RabbitMQProducer生產者項目中,添加以下代碼。
using?RabbitMQ.Client; using?System; using?System.Text;namespace?RabbitMQProducer {class?Program{static?void?Main(string[]?args){var?factory?=?new?ConnectionFactory(){HostName?=?"localhost",Port?=?5672,UserName?=?"guest",Password?=?"guest"};using?var?connection?=?factory.CreateConnection();using?var?channel?=?connection.CreateModel();var?exchange?=?"msg_test";channel.ExchangeDeclare(exchange,?type:?ExchangeType.Fanout);for?(int?i?=?0;?i?<?10000;?i++){var?message?=?$"hello,我是生產者【{i?+?1}】號";var?body?=?Encoding.UTF8.GetBytes(message);channel.BasicPublish(exchange,?routingKey:?"",?basicProperties:?null,?body:?body);Console.WriteLine($"-?發送消息:{message}");}}} }模擬發出10000次消息,接下來在RabbitMQConsumer消費者項目中接收消息,代碼如下:
using?RabbitMQ.Client; using?RabbitMQ.Client.Events; using?System; using?System.Text;namespace?RabbitMQConsumer {class?Program{static?void?Main(string[]?args){var?factory?=?new?ConnectionFactory(){HostName?=?"localhost",Port?=?5672,UserName?=?"guest",Password?=?"guest"};using?var?connection?=?factory.CreateConnection();using?var?channel?=?connection.CreateModel();var?exchange?=?"msg_test";channel.ExchangeDeclare(exchange,?type:?ExchangeType.Fanout);var?queueName?=?channel.QueueDeclare().QueueName;channel.QueueBind(queue:?queueName,?exchange,?routingKey:?"");Console.WriteLine("開始監聽消息...");while?(true){var?consumer?=?new?EventingBasicConsumer(channel);consumer.Received?+=?(model,?ea)?=>{byte[]?body?=?ea.Body.ToArray();var?message?=?Encoding.UTF8.GetString(body);Console.WriteLine($"-?接收到消息:{message}");};channel.BasicConsume(queue:?queueName,?autoAck:?true,?consumer:?consumer);}}} }同時啟動兩個看看效果。
一閃而過,速度還是挺快的,更多操作可以查看官方教程:https://www.rabbitmq.com/getstarted.html
總結
以上是生活随笔為你收集整理的.NET Core 下使用 RabbitMQ的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跟我一起学.NetCore之Asp.Ne
- 下一篇: ASP.NET Core 3.x启动时运