.net core实践系列之短信服务-Sikiro.SMS.Bus服务的实现

 

前言

前两篇《

如上图所示,消费者订阅到消费消息后,通过工厂类创建出对应的短信运营商类,通过调用Send方法进行对短信运营商服务请求,得到响应结果后对持久化数据的状态进行更新。假如中途遇到异常则回滚数据状态,等待下一次调度任务进行调度。

下面是MainService的代码示例:

复制代码
  public class MainService : IMicroService     {         private readonly IBus _bus;         private readonly SmsService _smsService;          public MainService(IBus bus, SmsService smsService)         {             _bus = bus;             _smsService = smsService;         }          public void Start()         {             Console.WriteLine("I started");              _bus.Subscribe<SmsQueueModel>("", msg =>             {                 try                 {                     _smsService.Send(msg.MapTo<SmsQueueModel, SmsModel>());                 }                 catch (Exception e)                 {                     _smsService.RollBack();                     e.WriteToFile();                 }             });         }          public void Stop()         {             ConfigServer.Container?.Dispose();             Console.WriteLine("I stopped");         }     }
复制代码

 

下面是SmsService的代码示例:

复制代码
public void Send(SmsModel item)         {             Sms = item;              var isSuccess = _smsFactory.Create(item.Type).SendSMS(item.Mobiles, item.Content, _configuration["Sms:SignName"]);             if (isSuccess)                 Success(item.Id);             else                 Fail(item.Id);         }          public void RollBack()         {             RollBack(Sms.Id);         }          public void RollBack(string id)         {             _mongoProxy.Update<SmsModel>(a => a.Id == id,                 a => new SmsModel { Status = SmsEnums.SmsStatus.待处理 });         }          private void Success(string id)         {             _mongoProxy.Update<SmsModel>(a => a.Id == id,                 a => new SmsModel { Status = SmsEnums.SmsStatus.成功 });         }          private void Fail(string id)         {             _mongoProxy.Update<SmsModel>(a => a.Id == id,                 a => new SmsModel { Status =
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信