首页 > 其他分享 >ABP Framework - 后台服务

ABP Framework - 后台服务

时间:2023-07-20 14:00:14浏览次数:42  
标签:后台作业 args 作业 backgroundJobManager options ABP Framework 后台 public

后台服务

在ABP Framework中,后台分为作业和工作者,他们的不同点为:

  • 作业
    • 持久性的任务,可放在队列中执行。
    • 失败后会继续重试
  • 工作者
    • 在后台运行的独立线程
    • 定期运行

后台作业

依赖包:Volo.Abp.BackgroundJobs.Abstraction

创建后台作业

后台作业是通过实现IBackgroundJob<TArgs>的现接口或继承自BackgroundJob<TArgs>的类。在***.Application项目中添加StudentBackgroundJob

/// <summary>
/// 创建后台作业
/// </summary>
public class StudentBackgroundJob : BackgroundJob<Student>, ITransientDependency
{
    /// <summary>
    /// 实现Execute方法
    /// 其中TArgs为Student实体类
    /// </summary>
    /// <param name="args"></param>
    public override void Execute(Student args)
    {
        // 判断出生日期
        if (DateTime.Now.Day == args.Brithday.Day &&
            DateTime.Now.Month == args.Brithday.Month) {
            args.Age += 1;
            // 发送生日祝福
            ....
        }
    }
}

当作业在执行时出现异常,需抛出异常而不是将异常进行隐藏,因为抛出异常时系统会继续重试该作业,如果隐藏异常,系统会认为作业正常执行。

队列作业

作业代码完成后,需要通过队列的方式进行调用,此时可使用 IBackgroundJobManager 服务去管理队列。

public class RegistrationService:ApplicationService
{
    private readonly IBackgroundJobManager _backgroundJobManager;
    public RegistrationService(IBackgroundJobManager backgroundJobManager)
    {
        _backgroundJobManager = backgroundJobManager;
    }
    /// <summary>
    /// 将要执行的任务放在队列中,然后进行作业
    /// </summary>
    /// <param name="student"></param>
    /// <returns></returns>
    public async Task RegisterAsync(Student student) { 
        await _backgroundJobManager.EnqueueAsync(student);  
    }
}

作业配置

[DependsOn(typeof(AbpBackgroundJobsModule))]
public class StopJobModule : AbpModule
{
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        // 禁用作业执行
        Configure<AbpBackgroundJobOptions>(options =>
        {
            options.IsJobExecutionEnabled = false; 
        });
        // 更改后台作业的的超时时间
        Configure<AbpBackgroundJobWorkerOptions>(options =>
        {
            options.DefaultTimeout = 864000; //86400秒
        });
    }
}	

标签:后台作业,args,作业,backgroundJobManager,options,ABP,Framework,后台,public
From: https://www.cnblogs.com/wanghun315/p/17568105.html

相关文章

  • mysql 5.7 framework
    MySQL5.7Framework:AComprehensiveGuideMySQLisoneofthemostpopularandwidelyusedopen-sourcerelationaldatabasemanagementsystems.Itoffersapowerfulandflexibleframeworkforstoring,managing,andretrievingdataefficiently.Inthisart......
  • 利用Abp过滤器实现业务数据“回收站”功能
    @目录原理创建过滤器使用过滤器查询删除恢复原理回收站是当用户删除一条记录时,不是直接从数据库中删除,而是将其放入“回收站”,以便用户可以在需要时恢复数据。在Abp框架中,若实体实现了ISoftDelete,则将实体标记为删除时不是物理删除,而是“软删除”publicinterfaceISoftDelete......
  • ABP-配置设置
    配置设置ABP遵循的是约定大于配置,作为约定的内容需要在应用程序中进行设置。定义设置在设置之前需要先定义他,由于ABP是模块化的,不同模块都可以拥有自己独立的设置参数,只需要在类中派生SettingDefinitionProvider类//ABP会自动发现并和注册设置的定义publicclassStudentSet......
  • Entity Framework Core 使用案例
    数据库生成实体类代码NuGet:Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.Tools在程序包管理控制台中执行一下命令Scaffold-DbContext"Server=【地址】;Database=【数据库名字】;Uid=【用户名】;Pwd=【密码】;"Pomelo.EntityFrameworkCore.MySql-Output......
  • android 后台发送心跳轮询
    Android后台发送心跳轮询实现指南概述在Android开发中,实现后台发送心跳轮询是一种常见的技术手段,用于与服务器保持长连接并及时获取数据更新。本文将详细介绍实现这一功能的步骤和所需代码。流程概览以下表格展示了整个实现过程的步骤概览:步骤描述1创建后台服务2......
  • vue-element-admin改为从后台拿动态路由
    改为从后台拿动态路由,大概如下步骤:1、后台增加接口,返回动态路由数据2、前端增加请求动态路由接口请求3、修改src/route/index.js去掉原有的动态路由,增加组件名和组件对象映射map4、修改src/store/modules/permission.js修改当前权限判断处理方法 generateRoutes一、后......
  • java后台启动jar包的一些命令
    启动方式一在jar包所在文件夹打开命令窗口,输入以下命令java-jarapp.jar特点:当前ssh窗口被锁定,可按CTRL+C打断程序运行,或直接关闭窗口,程序退出启动方式二java-jarapp.jar&&代表在后台运行。特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。启动方式三:no......
  • SSM整合--前后台协议联调(添加功能)
    设置html文件中添加的弹窗 发送ajax请求,注意使用的时rest风格,post使用forData获取到页面表单的数据,然后发送给后台设置添加成功后,添加表单消失,并且重新查询全部 ......
  • .Net Framework 离线安装包
    .NETFramework2.0ServicePack1x86:https://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exex64:https://download.microsoft.com/download/9/8/6/98610406-c2b7-45a4-bdc3-9db1b1c5f7e2/NetFx20SP1_x64.exe.NETFram......
  • SSM整合--前后台协议联调(列表功能)
    1.添加一个新的类,因为springmvc会拦截所有请求,所以要放行关于页面的一切配置 2.扫描包 3.发送异步请求,这里已经把双向绑定绑定好了,直接用的 ......