首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >石英作业未启动

石英作业未启动
EN

Stack Overflow用户
提问于 2019-04-18 08:47:11
回答 1查看 594关注 0票数 2

我正在尝试使用Abp.Quartz来调度作业。

与净核心2.2一起工作,4.5英镑

我在这里做了所有类似于docs的事情-- https://aspnetboilerplate.com/Pages/Documents/Quartz-Integration,只在PostInitialize方法中解析它。

最后,我尝试了与docs完全相同的方法(从控制器启动调度程序)。

但它也不管用。工作还没开始。

代码语言:javascript
复制
namespace Cloud
{
    [DependsOn(typeof(AbpZeroCoreModule),
               typeof(AbpQuartzModule))]
    public class CloudCoreModule : AbpModule
    {
        public override void PreInitialize()
        {
        }

        public override void Initialize()
        {            
            IocManager.RegisterAssemblyByConvention(typeof(CloudCoreModule)
                      .GetAssembly());
        }

        public override void PostInitialize()
        {
             IocManager.Resolve<IQuartzScheduleJobManager>().ScheduleAsync<ApiRequestQueues.ApiRequestProcessor>(
                job =>
                {
                    job
                      .WithIdentity("RevolutApiProcessor")
                      .WithDescription("A job witch processing request front");
                },
                trigger =>
                {
                    trigger
                        .StartNow()
                        .WithSimpleSchedule(
                            schedule =>
                            {
                                schedule
                                    .RepeatForever()
                                    .WithIntervalInSeconds(5)
                                    .Build();
                            });

                });
        }
    }
}

这是ApiRequestProcessor类

代码语言:javascript
复制
public class ApiRequestProcessor : JobBase, ITransientDependency
{
    public override async Task Execute(IJobExecutionContext context)
    {
     //some work
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-12-10 15:12:39

迟到总比不去好。

虽然没有Abp.Quartz包,但我还是成功地实现了这一目标。如果您能够使用标准的Quartz包,可以使用以下步骤:

  1. Startup.cs中将作业定义为正常并将其设置为正常
  2. 确保您的类既实现了IJob,使Quartz快乐,又实现了ITransientDependency,使ASP.NET样板高兴。
  3. 非常重要的,如果作业代码以任何方式使用DbContext,则需要确保[UnitOfWork]装饰器在您的作业类中(这对于确保作业以原子方式运行并且不影响服务器上可能发生的任何其他事务都很重要)。

简而言之,一个普通的工作阶级看起来可能是这样的:

代码语言:javascript
复制
using System;
using Quartz;

namespace MyProject.MyJobService
{
    [UnitOfWork]
    public class SimpleJob : IJob, ITransientDependency
    {
        public async Task Execute(IJobExecutionContext context)
        { 
            Console.WriteLine("Hello from quartz job!");
        }
    }
}

在这里可以找到更多的信息和讨论(也可以看到我是如何最终得到这个解决方案的):https://github.com/aspnetboilerplate/aspnetboilerplate/issues/3757

当有疑问时,仔细阅读Quartz在应用程序输出中告诉您的内容--通常会给出错误的线索,但我相信我的解决方案会对您有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55742355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档