0


在一个.NET Core项目中使用RabbitMQ进行即时消息管理

为了在一个.NET Core项目中使用RabbitMQ进行即时消息管理,以下是详细的全程操作指南,包括安装、配置、编写代码和调试使用。
在这里插入图片描述

一、安装RabbitMQ

1. 安装Erlang

RabbitMQ依赖Erlang,因此需要先安装Erlang。

  • Windows: 下载并运行Erlang安装程序:Erlang下载页面
2. 安装RabbitMQ
  • Windows: 下载并运行RabbitMQ安装程序:RabbitMQ下载页面

二、配置RabbitMQ

1. 启用管理插件

打开命令提示符,并运行以下命令:

rabbitmq-plugins enable rabbitmq_management
2. 创建用户并设置权限
rabbitmqctl add_user myuser mypassword
rabbitmqctl set_permissions -p / myuser ".*"".*"".*"
rabbitmqctl set_user_tags myuser administrator
3. 访问管理界面

在浏览器中访问:http://localhost:15672
使用刚才创建的用户名

myuser

和密码

mypassword

登录。

三、在.NET Core项目中使用RabbitMQ

在这里插入图片描述

1. 创建.NET Core项目

打开命令提示符或PowerShell,进入你想创建项目的目录,然后运行以下命令:

dotnet new console -n IMProject
cd IMProject

在这里插入图片描述

2. 安装RabbitMQ.Client包

在项目目录中运行以下命令安装RabbitMQ的客户端库:

dotnet add package RabbitMQ.Client
3. 编写发送和接收消息的代码
发送消息 (Producer)

创建一个文件

Producer.cs

,内容如下:

usingSystem;usingRabbitMQ.Client;usingSystem.Text;classProducer{publicstaticvoidMain(){var factory =newConnectionFactory(){ HostName ="localhost"};using(var connection = factory.CreateConnection())using(var channel = connection.CreateModel()){
            channel.QueueDeclare(queue:"chat",durable:false,exclusive:false,autoDelete:false,arguments:null);string message ="Hello World!";var body = Encoding.UTF8.GetBytes(message);

            channel.BasicPublish(exchange:"",routingKey:"chat",basicProperties:null,body: body);
            Console.WriteLine(" [x] Sent {0}", message);}}}
接收消息 (Consumer)

创建一个文件

Consumer.cs

,内容如下:

usingSystem;usingRabbitMQ.Client;usingRabbitMQ.Client.Events;usingSystem.Text;classConsumer{publicstaticvoidMain(){var factory =newConnectionFactory(){ HostName ="localhost"};using(var connection = factory.CreateConnection())using(var channel = connection.CreateModel()){
            channel.QueueDeclare(queue:"chat",durable:false,exclusive:false,autoDelete:false,arguments:null);var consumer =newEventingBasicConsumer(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:"chat",autoAck:true,consumer: consumer);

            Console.WriteLine(" [*] Waiting for messages. To exit press CTRL+C");
            Console.ReadLine();}}}

四、调试和运行

在这里插入图片描述

1. 运行接收消息的程序

在命令提示符或PowerShell中,运行以下命令:

dotnet run --project ./Consumer.csproj

你应该会看到类似以下的输出:

 [*] Waiting for messages. To exit press CTRL+C
2. 运行发送消息的程序

打开另一个命令提示符或PowerShell窗口,运行以下命令:

dotnet run --project ./Producer.csproj

你应该会看到类似以下的输出:

 [x] Sent Hello World!

在接收消息的程序窗口中,你应该会看到类似以下的输出:

 [x] Received Hello World!

五、集成到IM项目中

为了将RabbitMQ集成到一个更复杂的IM项目中,你可以创建一个ASP.NET Core Web API项目,并在控制器中使用RabbitMQ来发送和接收消息。

1. 创建ASP.NET Core Web API项目

在命令提示符或PowerShell中,运行以下命令:

dotnet new webapi -n IMWebApi
cd IMWebApi
2. 安装RabbitMQ.Client包

在项目目录中运行以下命令安装RabbitMQ的客户端库:

dotnet add package RabbitMQ.Client
3. 创建消息服务

创建一个文件

Services/RabbitMQService.cs

,内容如下:

usingRabbitMQ.Client;usingRabbitMQ.Client.Events;usingSystem;usingSystem.Text;publicclassRabbitMQService{privatereadonlyConnectionFactory _factory;publicRabbitMQService(){
        _factory =newConnectionFactory(){ HostName ="localhost"};}publicvoidSendMessage(string message){using(var connection = _factory.CreateConnection())using(var channel = connection.CreateModel()){
            channel.QueueDeclare(queue:"chat",durable:false,exclusive:false,autoDelete:false,arguments:null);var body = Encoding.UTF8.GetBytes(message);

            channel.BasicPublish(exchange:"",routingKey:"chat",basicProperties:null,body: body);
            Console.WriteLine(" [x] Sent {0}", message);}}publicvoidReceiveMessages(){using(var connection = _factory.CreateConnection())using(var channel = connection.CreateModel()){
            channel.QueueDeclare(queue:"chat",durable:false,exclusive:false,autoDelete:false,arguments:null);var consumer =newEventingBasicConsumer(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:"chat",autoAck:true,consumer: consumer);

            Console.WriteLine(" [*] Waiting for messages. To exit press CTRL+C");
            Console.ReadLine();}}}
4. 创建控制器

创建一个文件

Controllers/ChatController.cs

,内容如下:

usingMicrosoft.AspNetCore.Mvc;[ApiController][Route("[controller]")]publicclassChatController:ControllerBase{privatereadonlyRabbitMQService _rabbitMQService;publicChatController(){
        _rabbitMQService =newRabbitMQService();}[HttpPost("send")]publicIActionResultSendMessage([FromBody]string message){
        _rabbitMQService.SendMessage(message);returnOk("Message sent");}[HttpGet("receive")]publicIActionResultReceiveMessages(){
        _rabbitMQService.ReceiveMessages();returnOk("Receiving messages");}}
5. 运行Web API

在命令提示符或PowerShell中,运行以下命令:

dotnet run

你可以使用Postman或其他API测试工具来发送和接收消息:

  • 发送消息:POST http://localhost:5000/chat/send,请求体为纯文本消息。
  • 接收消息:GET http://localhost:5000/chat/receive

六、调试和测试

在这里插入图片描述

1. 发送消息

使用Postman发送一个POST请求到

http://localhost:5000/chat/send

,请求体为纯文本消息,例如:“Hello from Postman”。

2. 接收消息

在浏览器或Postman中发送一个GET请求到

http://localhost:5000/chat/receive

,你应该会在控制台中看到接收到的消息。

七、总结

通过以上步骤,你已经成功地在一个.NET Core项目中使用RabbitMQ进行即时消息管理。你可以根据项目的需求进一步扩展和优化。例如,使用依赖注入来管理RabbitMQService,处理消息的持久化存储,添加更多的业务逻辑等。

//python 因为爱,所以学
print("Hello, Python!")

关注我,不迷路,共学习,同进步

关注我,不迷路,共学习,同进步

标签: .netcore rabbitmq ruby

本文转载自: https://blog.csdn.net/sixpp/article/details/142483480
版权归原作者 百锦再@新空间代码工作室 所有, 如有侵权,请联系我们删除。

“在一个.NET Core项目中使用RabbitMQ进行即时消息管理”的评论:

还没有评论