参考
.NET中大型项目开发必备(12)--使用MQ消息队列 - DeveloperSharp - 博客园 (cnblogs.com)
环境搭建
下载依赖包
DeveloperSharp.RabbitMQ
安装rabbitmq
参考: Docker安装Rabbitmq超详细教程docker rabbitmqHi梅的博客-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秒内没有程序取出队列中的消息,将会交给死信队列处理