RabbitMQ的应用


1.安装

  如果有Docker,可以通过Docker来安装,命令:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management


启动后,查看端口:

查看是否安装好,在浏览器中用15672端口进行查看。

 能出现这个就说明安装成功。

用户名和密码初始都是guest。

登录成功后:

也可以从下面的页面直接下载:https://www.rabbitmq.com/install-windows.html

对应的是这两个链接:

 https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.9/rabbitmq-server-3.8.9.exe

https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.8.9/rabbitmq-server-3.8.9.exe

2.开发

  开发之前先看看入门文档: https://www.rabbitmq.com/getstarted.html

 命令行方式:

dotnet new console --name Send
move Send/Program.cs Send/Send.cs//在Powershell下用mv 命令,cmd下用Move命令。
dotnet new console --name Receive
move Receive/Program.cs Receive/Receive.cs //在Powershell下用mv 命令,cmd下用Move命令。
cd Send
dotnet add package RabbitMQ.Client
dotnet restore
cd ../Receive
dotnet add package RabbitMQ.Client
dotnet restore

visual studio 2019 方式:

用.net core 创建程序

NuGet安装:

安装后:

 代码参考: https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/dotnet

 发送端源码:

using System; using RabbitMQ.Client; using System.Text; using System.Threading;
namespace Send {     class Program     {         static void Main(string[] args)         {             for(int i=0;i<10;i++){                 var factory=new ConnectionFactory(){ HostName="localhost"};                 using(var connection=factory.CreateConnection()){                     using(var channel=connection.CreateModel()){                         channel.QueueDeclare(queue:"hello",durable:false,exclusive:false,autoDelete:false,arguments:null);                         string message="Hello World  "+ i.ToString();                         var body=Encoding.UTF8.GetBytes(message);                         channel.BasicPublish(exchange:"",routingKey:"hello",basicProperties:null,body:body);                         Console.WriteLine(" [x] Sent {0}",message);                     }                 }                 Thread.Sleep(1000);             }             Console.WriteLine(" Press [Enter] to exit.");             Console.ReadLine();         }     } }     接收端源码: using System; using RabbitMQ.Client; using System.Text; using RabbitMQ.Client.Events;
namespace Receive {     class Program     {         static void Main(string[] args)         {             var factory = new ConnectionFactory() { HostName = "localhost" };             using(var connection = factory.CreateConnection())             using(var channel = connection.CreateModel())             {                 channel.QueueDeclare(queue: "hello",                                     durable: false,                                 exclusive: false,                                 autoDelete: false,                                 arguments: null);
            var consumer = new EventingBasicConsumer(channel);             consumer.Received += (model, ea) =>             {                 var body = ea.Body.ToArray();                 var message = Encoding.UTF8.GetString(body);                 Console.WriteLine(" [x] Received {0}", message);             };             channel.BasicConsume(queue: "hello",                                 autoAck: true,                                 consumer: consumer);
                         }         Console.WriteLine(" Press [enter] to exit.");         Console.ReadLine();         }     } }  

以上只是简单的实现了发送和接收。接下来是更复杂些的。