.Net RabbitMQ

124 阅读2分钟

参考

.NET中大型项目开发必备(12)--使用MQ消息队列 - DeveloperSharp - 博客园 (cnblogs.com)

环境搭建

下载依赖包

DeveloperSharp.RabbitMQ

image.png

安装rabbitmq

参考: Docker安装Rabbitmq超详细教程_docker rabbitmq_Hi梅的博客-CSDN博客

docker pull rabbitmq

image.png

docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5673:5672 rabbitmq

image.png

image.png

登录:RabbitMQ Management,账号密码都是guest

image.png

image.png

配置mq连接信息

配置连接信息:为appsetting.json添加内容

  "DeveloperSharp.RabbitMQ": [
    {
      "HostName": "127.0.0.1",
      "UserName": "guest",
      "Password": "guest",
      "Port": 5673
    }
  ]

image.png

基础方法

  • 测试逻辑:
    • 先向RabbitMQ服务器上名为“aa”的队列发送了5个消息,
    • 然后从RabbitMQ服务器上的“aa”队列中获取,并打印出第1个消息,
    • 最后再连续从RabbitMQ服务器上的“aa”队列中获取剩余4个消息,并把它们写入名为fj.txt的文件。

Program.cs中添加:

//发送5个消息(使用SendMessage)
using DeveloperSharp.RabbitMQ;

RabbitMQHelper.SendMessage("aa", "世界1,你好!");
RabbitMQHelper.SendMessage("aa", "世界2,你好!");
RabbitMQHelper.SendMessage("aa", "世界3,你好!");
RabbitMQHelper.SendMessage("aa", "世界4,你好!");
RabbitMQHelper.SendMessage("aa", "世界5,你好!");

//获取1个消息(使用GetMessage)
string OneMessage = RabbitMQHelper.GetMessage("aa").Message;
Console.WriteLine(OneMessage);

//向fj.txt这个文本文件中写入4个消息(使用UseMessage)
RabbitMQHelper.UseMessage("aa", t =>
{
    System.IO.File.AppendAllText("D:/fj.txt", t.Message);
    return true;
});

image.png

运行程序后消息成功被加载和读取

image.png

死信队列

  • 测试逻辑:
    • 首先,在RabbitMQ服务器上定义一个名为"bbq"、且其中存放的消息会在60秒后过期失效的队列。
    • 然后,在RabbitMQ服务器上定义一个与"bbq"队列对应的死信队列。并连续从该死信队列中获取消息并把它们写入名为BB.txt的文件。
    • 最后,向RabbitMQ服务器上的"bbq"队列发送3个消息。
//定义bbq队列,其中存放的消息会在10秒后过期
using DeveloperSharp.RabbitMQ;

var myQ = RabbitMQHelper.SetQueue("bbq", 10000);

//定义与bbq队列对应的死信队列
var expQ = RabbitMQHelper.GetQueue("bbq");
//向BB.txt这个文本文件中连续写入死信队列中的消息
expQ.UseMessage(t =>
{
    System.IO.File.AppendAllText("D:/BB.txt", t.Message);
    return true;
});

//向bbq队列发送3个消息
myQ.SendMessage("jinA");
myQ.SendMessage("jinB");
myQ.SendMessage("jinC");

由于10秒内没有程序取出队列中的消息,将会交给死信队列处理

image.png