之前的公司一直是使用的数据库做队列,比如要发的各种邮件信息都会写到对应的表中,另一个专用的程序去定时发邮件。邮件发送失败了会重发的,可靠性非常高的。
不过大厂貌似都使用专用的消息队列,能力有限没时间精力去捣腾那些高大上的东西,就拿redis来做做实验
安装redisf服务
nuget StackExchange.Redis
class Program
{
static void Main(string[] args)
{
using (var redis= ConnectionMultiplexer.Connect("localhost:6379"))
{
var db = redis.GetDatabase();
db.ListRightPush("Sys_Order_Sms", $"尊敬的客户,你已经完成下单,订单号为{new Random().Next(100000, 999999)}");
}
}
}
class Program
{
static void Main(string[] args)
{
using (var redis = ConnectionMultiplexer.Connect("localhost:6379"))
{
var db = redis.GetDatabase();
while (true)
{
string sms = db.ListRightPop("Sys_Order_Sms");
if (sms != null)
{
Console.WriteLine($"发送短信:{sms}");
}
else
{
Console.WriteLine("没有短信需要发送");
}
Thread.Sleep(5000);
}
}
}
}