其JobType就是接下来要介绍的IBackgroundJob实例的类型。IBackgroundJobManager最终就是根据这个JobType通过反射恢复出IBackgroundJob实例的。JobArgs就是传入IBackgroundJob实例的Execute方法的实参(这里会被序列化后在赋值给BackgroundJobInfo)。 IBackgroundJob/BackgroundJob:定义一个后台工作任务的接口/和基本实现。...
其JobType就是接下来要介绍的IBackgroundJob实例的类型。IBackgroundJobManager最终就是根据这个JobType通过反射恢复出IBackgroundJob实例的。JobArgs就是传入IBackgroundJob实例的Execute方法的实参(这里会被序列化后在赋值给BackgroundJobInfo)。 IBackgroundJob/BackgroundJob:定义一个后台工作任务的接口/和基本实现。...
文主要说明ABP中后台工作者模块(BackgroundWorker)的实现方式,和后台工作模块(BackgroundJob)。ABP通过BackgroundWorkerManager来管理BackgroundJobManager,然后通过BackgroundJobManager来管理BackgroundJob。BackgroundJob就代表一个真正的后台任务。 这两个模块是在ABP... ...
上面我们也说明了Abp定义了IBackgroundJobStore来持久化后台作业,Abp默认使用InMemoryBackgroundJobStore在内存中持久化后台作业。 我们看下源码就明白了: //AbpKernelModule.cs//默认注入的是 InMemoryBackgroundJobStoreif(Configuration.BackgroundJobs.IsJobExecutionEnabled){IocManager.RegisterIfNot<IBackgroundJobStor...
IBackgroundJobManager默认是由BackgroundJobManager实现的。它可以被其他的后台工作提供者替代(看后面的Hangfire集成)。关于默认的BackgroundJobManager一些信息如下: 它是一个在单线程中以FIFO(First In First Out)工作的简单工作队列,使用IBackgroundJobStore来持久化工作。
在定义后台作业后,我们可以注入并使用IBackgroundJobManager接口来添加作业到队列中。 上面我们已经定义了TestJob类,让我们来看下如何使它排队: publicclassMyService { privatereadonlyIBackgroundJobManager_backgroundJobManager; publicMyService(IBackgroundJobManagerbackgroundJobManager) ...
在定义后台作业后,我们可以注入并使用IBackgroundJobManager接口来添加作业到队列中。 上面我们已经定义了TestJob类,让我们来看下如何使它排队: publicclassMyService{privatereadonlyIBackgroundJobManager_backgroundJobManager;publicMyService(IBackgroundJobManagerbackgroundJobManager){_backgroundJobManager=backgroundJob...
if (options.IsJobExecutionEnabled) { // 获得后台工作者管理器,并将负责后台作业的工作者添加进去。 context.ServiceProvider .GetRequiredService<IBackgroundWorkerManager>() .Add(context.ServiceProvider.GetRequiredService<IBackgroundJobWorker>() ); ...
参数应该做到简洁,不应该包含实体或者其他非序列化的对象。正如SimpleSendEmailJob所展示的,我们应该仅存储实体的Id并从仓储内得到该实体的作业。 2. 添加作业到队列中 在定义后台作业后,我们可以注入并使用IBackgroundJobManager接口来添加作业到队列中。 上面我们已经定义了TestJob类,让我们来看下如何使它排队: ...
参数应该做到简洁,不应该包含实体或者其他非序列化的对象。正如SimpleSendEmailJob所展示的,我们应该仅存储实体的Id并从仓储内得到该实体的作业。 2. 添加作业到队列中 在定义后台作业后,我们可以注入并使用IBackgroundJobManager接口来添加作业到队列中。 上面我们已经定义了TestJob类,让我们来看下如何使它排队: ...