网站建设排版规定,河南省建设厅门户网站,wordpress 加关注插件,外国语学院英文网站建设介绍RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整,可复用的企业级消息队列(Message Queue 一种应用程序与应用程序之间的一种通信方法)系统,RabbitMQ可以实现点对点,发布订阅等消息处理模式官网#xff1a;https://www.rabbitmq.com/dotnet.h… 介绍RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整,可复用的企业级消息队列(Message Queue 一种应用程序与应用程序之间的一种通信方法)系统,RabbitMQ可以实现点对点,发布订阅等消息处理模式官网https://www.rabbitmq.com/dotnet.html开源地址https://github.com/rabbitmq/rabbitmq-dotnet-client安装docker下安装 RabbitMQdocker pull rabbitmq:3-management
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 -d rabbitmq:3-management
其他平台安装 RabbitMQhttps://www.rabbitmq.com/download.html为了开发方便我在docker中安装了RabbitMQRabbitMQ安装完成后默认端口打开地址为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