2.6.3 RabbitMQ--HelloWorld
参考链接:https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html
1.RabbitMQ Container 快速安装
docker run -d -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
运行成功后可以访问(localhost 替换为服务器地址)
http://localhost:15672/#/
用户名密码默认为 guest,替换发送端,接收端的 localhost 为服务器地址
2.新建控制台项目,Nuget引入RabbitMQ.Client,Sender(发送端)
using System; using System.Text; using RabbitMQ.Client; namespace Sender { class Program { static void Main(string[] args) { var factory = new ConnectionFactory() { HostName = "test.guanjieerp.cn" }; 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!"; //var body = Encoding.UTF8.GetBytes(message); //channel.BasicPublish(exchange: "", // routingKey: "hello", // basicProperties: null, // body: body); //Console.WriteLine(" [x] Sent {0}", message); //发送多条信息 channel.QueueDeclare(queue: "hello", durable: false, // 持久化 exclusive: false, // 排它 autoDelete: false, // 自动删除 arguments: null); Console.WriteLine("Please input your message with enter:"); string message = Console.ReadLine(); while (message != "EXIT") { var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body); Console.WriteLine(" [x] Sent {0}", message); Console.WriteLine("Please input your message with enter:"); message = Console.ReadLine(); } } Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } } } }
3.新建控制台项目,Nuget引入RabbitMQ.Client,Receiver(接收端)
namespace Receiver { class Receiver { public static void Main() { 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(); } } } }
4.发送消息
启动接收端,再启动发送端,发送多条消息