Hangfire(任务调度)

官网:hangfire.io

 

简单用法:

1.放入job

BackgroundJob.Enqueue<IIMService>(c => c.SendBatchSmsByIm(readyBatchSmsCommand.SmsTaskId));
     2.方法的实现

     ///
<summary> /// 调用IM接口发送短信 /// </summary> /// <param name="mobile"></param> /// <param name="content"></param> /// <returns></returns> public async Task<string> SendSmsByIM(string mobile, string content) { var result = await _gateWayRestfulApi.PostAsync<string>($"Api/PublicAggregator/publicServices/ThirdPartyInterface/SendMsgByIM", new { mobile, content }); return result; } /// <summary> /// 批量调用IM接口发送短信 /// </summary> /// <param name="taskId"></param> /// <returns></returns> public async Task SendBatchSmsByIm(string taskId) { var pageIndex = 0; var pageSize = 100; while (true) { var smsTaskDetails = _asyncRepository.Table.Where(m => m.SmsTaskId == taskId).OrderBy(x => x.CreatedDate).Skip(pageIndex * pageSize).Take(pageSize); if (!smsTaskDetails.Any()) { break; } foreach (var smsTaskDetail in smsTaskDetails) { await SendSmsByIM(smsTaskDetail.Mobile, smsTaskDetail.Content); } pageIndex++; } }

 

实际项目:见Communication.Api -> SmsCoreController

posted @ 2019-10-24 11:12  月下之神  阅读(260)  评论(0编辑  收藏  举报