.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

docker pull rabbitmq:3-management
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 -d rabbitmq:3-management
  • 其他平台安装 RabbitMQ:https://www.rabbitmq.com/download.html

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

快速开始

接下来我们用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RabbitMQ是一个开源的消息中间件,被广泛用于构建可扩展、高可靠性和灵活的应用程序。它基于AMQP(高级消息队列协议)实现,允许不同系统之间进行异步通信,提供了解耦、可靠性以及可扩展性的优势。 在2021年,.NET Core成为.NET框架的主要版本,它是一个跨平台的开发框架,支持Windows、Linux和macOS等操作系统。通过将.NET CoreRabbitMQ结合使用,开发人员可以构建具有高性能和可伸缩性的应用程序,满足日益增长的需求。 使用.NET CoreRabbitMQ,您可以在应用程序中使用RabbitMQ的各种功能和特性。通过RabbitMQ的消息队列,您可以实现异步消息传输,让发送者和接收者之间的耦合度更低。这有助于解耦和提高应用程序的可靠性,因为消息可以在不同的时间和速度进行处理。 .NET Core使用RabbitMQ提供了丰富的库和工具,包括RabbitMQ.Client库,可以轻松地与RabbitMQ进行交互。通过使用这些库,您可以创建生产者和消费者应用程序,发送和接收消息,并处理各种RabbitMQ交互模式,如发布/订阅、点对点和请求/响应。 此外,.NET Core还提供了一些用于处理RabbitMQ消息的高级功能,如消息序列化、持久化和确认等。这些功能可以帮助您构建可靠和强大的应用程序,确保消息的安全传递和处理。 总之,.NET CoreRabbitMQ的结合可以帮助开发人员构建高性能、可靠和可伸缩的应用程序。通过使用RabbitMQ的消息中间件,您可以实现异步通信和解耦,而.NET Core提供了必要的工具和库来轻松地与RabbitMQ进行交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值