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