.NET Core 下使用 RabbitMQ

1|0介绍

RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整,可复用的企业级消息队列(Message Queue 一种应用程序与应用程序之间的一种通信方法)系统,RabbitMQ可以实现点对点,发布订阅等消息处理模式

2|0安装

为了开发方便,我在docker中安装了RabbitMQ,RabbitMQ安装完成后,默认端口打开地址为:http://localhost:15672,输入默认账号密码,guest/guest,可以看到RabbitMQ UI界面。

3|0快速开始

接下来我们用RabbitMQ来完成一个比较常见的生产者和消费者模式的代码,新建两个控制台项目,RabbitMQConsumerRabbitMQProducer

分别在两个项目中安装组件

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


__EOF__

本文作者阿星Plus
本文链接https://www.cnblogs.com/meowv/p/13614474.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   阿星Plus  阅读(891)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示