参考
.NET中大型项目开发必备(12)--使用MQ消息队列 - DeveloperSharp - 博客园 (cnblogs.com)
环境搭建
下载依赖包
DeveloperSharp.RabbitMQ
安装rabbitmq
参考: Docker安装Rabbitmq超详细教程_docker rabbitmq_Hi梅的博客-CSDN博客
docker pull rabbitmq
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5673:5672 rabbitmq
登录:RabbitMQ Management,账号密码都是guest
配置mq连接信息
配置连接信息:为appsetting.json
添加内容
"DeveloperSharp.RabbitMQ": [
{
"HostName": "127.0.0.1",
"UserName": "guest",
"Password": "guest",
"Port": 5673
}
]
基础方法
- 测试逻辑:
- 先向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;
});
运行程序后消息成功被加载和读取
死信队列
- 测试逻辑:
- 首先,在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秒内没有程序取出队列中的消息,将会交给死信队列处理