设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间01 现在时间01 缓存数据 当你走完一段之后回头看,你会发现,那些真正能被记得的事真的是没有多少,真正无法忘记的人屈指可数,真正有趣的日子不过是那么一些,而真正需要害怕的也是寥寥无几。

当你走完一段之后回头看,你会发现,那些真正能被记得的事真的是没有多少,真正无法忘记的人屈指可数,真正有趣的日子不过是那么一些,而真正需要害怕的也是寥寥无几。

查看: 1272|回复: 2

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

[复制链接]

  离线 

TA的专栏

  • 打卡等级:无名新人
  • 打卡总天数:1
  • 打卡月天数:0
  • 打卡总奖励:7
  • 最近打卡:2025-02-09 18:49:31
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
26
主题
20
精华
0
金钱
87
积分
50
注册时间
2023-9-30
最后登录
2025-8-23

发表于 2024-11-3 23:28:33 | 显示全部楼层 |阅读模式
目录
  • 一、安装RabbitMQ
    • 1. 安装Erlang
    • 2. 安装RabbitMQ
  • 二、配置RabbitMQ
    • 1. 启用管理插件
    • 2. 创建用户并设置权限
    • 3. 访问管理界面
  • 三、在.NET Core项目中使用RabbitMQ
    • 1. 创建.NET Core项目
    • 2. 安装RabbitMQ.Client包
    • 3. 编写发送和接收消息的代码
  • 四、调试和运行
    • 1. 运行接收消息的程序
    • 2. 运行发送消息的程序
  • 五、集成到IM项目中
    • 1. 创建ASP.NET Core Web API项目
    • 2. 安装RabbitMQ.Client包
    • 3. 创建消息服务
    • 4. 创建控制器
    • 5. 运行Web API
  • 六、调试和测试
    • 1. 发送消息
    • 2. 接收消息
  • 七、总结

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

    1.png

    一、安装RabbitMQ

    1. 安装Erlang

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

    Windows:
    下载并运行Erlang安装程序:Erlang下载页面

    2. 安装RabbitMQ

    Windows:

    下载并运行RabbitMQ安装程序:RabbitMQ下载页面

    二、配置RabbitMQ

    1. 启用管理插件

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

    1. rabbitmq-plugins enable rabbitmq_management
    复制代码

    2. 创建用户并设置权限

    1. rabbitmqctl add_user myuser mypassword
    2. rabbitmqctl set_permissions -p / myuser ".*" ".*" ".*"
    3. rabbitmqctl set_user_tags myuser administrator
    复制代码

    3. 访问管理界面

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

    1. myuser
    复制代码
    和密码
    1. mypassword
    复制代码
    登录。

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

    2.png

    1. 创建.NET Core项目

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

    1. dotnet new console -n IMProject
    2. cd IMProject
    复制代码

    3.png

    2. 安装RabbitMQ.Client包

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

    1. dotnet add package RabbitMQ.Client
    复制代码

    3. 编写发送和接收消息的代码

    发送消息 (Producer)

    创建一个文件

    1. Producer.cs
    复制代码
    ,内容如下:

    1. using System;
    2. using RabbitMQ.Client;
    3. using System.Text;
    4. class Producer
    5. {
    6. public static void Main()
    7. {
    8. var factory = new ConnectionFactory() { HostName = "localhost" };
    9. using (var connection = factory.CreateConnection())
    10. using (var channel = connection.CreateModel())
    11. {
    12. channel.QueueDeclare(queue: "chat",
    13. durable: false,
    14. exclusive: false,
    15. autoDelete: false,
    16. arguments: null);
    17. string message = "Hello World!";
    18. var body = Encoding.UTF8.GetBytes(message);
    19. channel.BasicPublish(exchange: "",
    20. routingKey: "chat",
    21. basicProperties: null,
    22. body: body);
    23. Console.WriteLine(" [x] Sent {0}", message);
    24. }
    25. }
    26. }
    复制代码

    接收消息 (Consumer)

    创建一个文件

    1. Consumer.cs
    复制代码
    ,内容如下:

    1. using System;
    2. using RabbitMQ.Client;
    3. using RabbitMQ.Client.Events;
    4. using System.Text;
    5. class Consumer
    6. {
    7. public static void Main()
    8. {
    9. var factory = new ConnectionFactory() { HostName = "localhost" };
    10. using (var connection = factory.CreateConnection())
    11. using (var channel = connection.CreateModel())
    12. {
    13. channel.QueueDeclare(queue: "chat",
    14. durable: false,
    15. exclusive: false,
    16. autoDelete: false,
    17. arguments: null);
    18. var consumer = new EventingBasicConsumer(channel);
    19. consumer.Received += (model, ea) =>
    20. {
    21. var body = ea.Body.ToArray();
    22. var message = Encoding.UTF8.GetString(body);
    23. Console.WriteLine(" [x] Received {0}", message);
    24. };
    25. channel.BasicConsume(queue: "chat",
    26. autoAck: true,
    27. consumer: consumer);
    28. Console.WriteLine(" [*] Waiting for messages. To exit press CTRL+C");
    29. Console.ReadLine();
    30. }
    31. }
    32. }
    复制代码

    四、调试和运行

    4.png

    1. 运行接收消息的程序

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

    1. dotnet run --project ./Consumer.csproj
    复制代码

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

    1.  [*] Waiting for messages. To exit press CTRL+C
    复制代码

    2. 运行发送消息的程序

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

    1. dotnet run --project ./Producer.csproj
    复制代码

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

    1.  [x] Sent Hello World!
    复制代码

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

    1.  [x] Received Hello World!
    复制代码

    五、集成到IM项目中

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

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

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

    1. dotnet new webapi -n IMWebApi
    2. cd IMWebApi
    复制代码

    2. 安装RabbitMQ.Client包

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

    1. dotnet add package RabbitMQ.Client
    复制代码

    3. 创建消息服务

    创建一个文件

    1. Services/RabbitMQService.cs
    复制代码
    ,内容如下:

    1. using RabbitMQ.Client;
    2. using RabbitMQ.Client.Events;
    3. using System;
    4. using System.Text;
    5. public class RabbitMQService
    6. {
    7. private readonly ConnectionFactory _factory;
    8. public RabbitMQService()
    9. {
    10. _factory = new ConnectionFactory() { HostName = "localhost" };
    11. }
    12. public void SendMessage(string message)
    13. {
    14. using (var connection = _factory.CreateConnection())
    15. using (var channel = connection.CreateModel())
    16. {
    17. channel.QueueDeclare(queue: "chat",
    18. durable: false,
    19. exclusive: false,
    20. autoDelete: false,
    21. arguments: null);
    22. var body = Encoding.UTF8.GetBytes(message);
    23. channel.BasicPublish(exchange: "",
    24. routingKey: "chat",
    25. basicProperties: null,
    26. body: body);
    27. Console.WriteLine(" [x] Sent {0}", message);
    28. }
    29. }
    30. public void ReceiveMessages()
    31. {
    32. using (var connection = _factory.CreateConnection())
    33. using (var channel = connection.CreateModel())
    34. {
    35. channel.QueueDeclare(queue: "chat",
    36. durable: false,
    37. exclusive: false,
    38. autoDelete: false,
    39. arguments: null);
    40. var consumer = new EventingBasicConsumer(channel);
    41. consumer.Received += (model, ea) =>
    42. {
    43. var body = ea.Body.ToArray();
    44. var message = Encoding.UTF8.GetString(body);
    45. Console.WriteLine(" [x] Received {0}", message);
    46. };
    47. channel.BasicConsume(queue: "chat",
    48. autoAck: true,
    49. consumer: consumer);
    50. Console.WriteLine(" [*] Waiting for messages. To exit press CTRL+C");
    51. Console.ReadLine();
    52. }
    53. }
    54. }
    复制代码

    4. 创建控制器

    创建一个文件

    1. Controllers/ChatController.cs
    复制代码
    ,内容如下:

    1. using Microsoft.AspNetCore.Mvc;
    2. [ApiController]
    3. [Route("[controller]")]
    4. public class ChatController : ControllerBase
    5. {
    6. private readonly RabbitMQService _rabbitMQService;
    7. public ChatController()
    8. {
    9. _rabbitMQService = new RabbitMQService();
    10. }
    11. [HttpPost("send")]
    12. public IActionResult SendMessage([FromBody] string message)
    13. {
    14. _rabbitMQService.SendMessage(message);
    15. return Ok("Message sent");
    16. }
    17. [HttpGet("receive")]
    18. public IActionResult ReceiveMessages()
    19. {
    20. _rabbitMQService.ReceiveMessages();
    21. return Ok("Receiving messages");
    22. }
    23. }
    复制代码

    5. 运行Web API

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

    1. dotnet run
    复制代码

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

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

    六、调试和测试

    5.png

    1. 发送消息

    使用Postman发送一个POST请求到

    1. http://localhost:5000/chat/send
    复制代码
    ,请求体为纯文本消息,例如:“Hello from Postman”。

    2. 接收消息

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

    1. http://localhost:5000/chat/receive
    复制代码
    ,你应该会在控制台中看到接收到的消息。

    七、总结

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

    1. //python 因为爱,所以学
    2. print("Hello, Python!")
    复制代码

    到此这篇关于在一个.NET Core项目中使用RabbitMQ进行即时消息管理的文章就介绍到这了,更多相关.NET Core使用RabbitMQ即时消息管理内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!


    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
    晓枫资讯-科技资讯社区-免责声明
    免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
          1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
          2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
          3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
          4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
          5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
    http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

      离线 

    TA的专栏

    等级头衔

    等級:晓枫资讯-列兵

    在线时间
    0 小时

    积分成就
    威望
    0
    贡献
    0
    主题
    0
    精华
    0
    金钱
    20
    积分
    20
    注册时间
    2022-12-25
    最后登录
    2022-12-25

    发表于 2025-4-7 10:34:18 | 显示全部楼层
    顶顶更健康!!!
    http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

      离线 

    TA的专栏

    等级头衔

    等級:晓枫资讯-列兵

    在线时间
    0 小时

    积分成就
    威望
    0
    贡献
    0
    主题
    0
    精华
    0
    金钱
    12
    积分
    4
    注册时间
    2022-12-27
    最后登录
    2022-12-27

    发表于 2025-4-11 16:58:33 | 显示全部楼层
    感谢楼主分享。
    http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
    严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    1楼
    2楼
    3楼

    手机版|晓枫资讯--科技资讯社区 本站已运行

    CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

    晓枫资讯--科技资讯社区

    本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

    如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表