abpvnext中使用后台工作者BackgroundWorker创建定时任务,实现定时从更新需要缓存的数据到redis
一、创建后台工作者
1、创建后台工作者
在application层 创建后台工作者类,内容如下 ,其中TAHM为我的自定义前缀名。 这个类的DoWorkAsync方法就是后台工作者默认定时执行的方法,重写这个方法可以填充自己的业务。
注意:为什么我在这个类里加了这么多service注入,那是因为我在第二步创建加载缓存的业务LoadEquipInfoService时,需要这些service,但是我在那边又没法初始化,只能在这个类里初始化,并借助doworkasync方法中的参数
workerContext.ServiceProvider.GetRequiredService<ILoadEquipInfoService>(); 来获取我的缓存业务接口对象,然后他需要的service初始化值就传递过去。
其实简单点理解,就是这个后台工作者类相当于一个控制器,DoWorkAsync相当于一个控制器暴露接口,后台工作者使用的service中需要注入和初始化的对象都要从这里通过workerContext来实现。
using JQ.TAHM.Application.Contracts;
using JQ.TAHM.Domain.Shared;
using JQ.TAHM.Domain;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.BackgroundWorkers;
using Volo.Abp.Caching;
using Volo.Abp.TenantManagement;
using Volo.Abp.Threading;
namespace JQ.TAHM.Application;
public class TAHMBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
{
private readonly IDistributedCache<List<PageTahmCJ_descOutput>, string> _cj_descCache;
private readonly IDistributedCache<List<TahmCJ_wd_tmpDto>, string> _cj_wd_tmpCache;
private readonly ITenantRepository _tenantrepository;
private readonly ITahmCJ_descAppService _cj_descappService;
private readonly ITahmCJ_wd_tmpAppService _cj_wd_tmpappService;
public TAHMBackgroundWorker(
AbpAsyncTimer timer,
IServiceScopeFactory serviceScopeFactory, IDistributedCache<List<PageTahmCJ_descOutput>, string> cj_descCache, IDistributedCache<List<TahmCJ_wd_tmpDto>, strin

文章介绍了如何在Abp框架中利用BackgroundWorker创建定时任务,定期从数据库获取数据并更新到Redis缓存中。首先,在Application层创建后台工作者类,注入所需服务,并重写DoWorkAsync方法执行业务逻辑。然后,在HttpApi.Host层注册后台工作者。接着,配置Redis连接,并创建一个业务接口类ILoadEquipInfoService,负责实际的缓存更新操作。该服务从数据库获取设备信息并存储到Redis,用于提高其他业务的效率。
最低0.47元/天 解锁文章
1660

被折叠的 条评论
为什么被折叠?



