Base solution for your next web application
Open Closed

Quartz Schedule IIS Stoped Problem #7100


User avatar
0
globalbilgi created

Merhaba,

Abp.Quartz ile oluşturduğum schedule IIS timeout süresi dolduğunda aşağıdaki gibi kendini kapatıyor.

INFO 2019-05-31 12:44:39,214 [45 ] soft.AspNetCore.Hosting.Internal.WebHost - Request starting HTTP/1.1 POST http://127.0.0.1:40864/iisintegration 0 INFO 2019-05-31 12:44:39,215 [45 ] soft.AspNetCore.Hosting.Internal.WebHost - Request finished in 0.6502ms 202 DEBUG 2019-05-31 12:44:39,222 [50 ] Abp.Modules.AbpModuleManager - Shutting down has been started DEBUG 2019-05-31 12:44:39,225 [50 ] Abp.BackgroundJobs.BackgroundJobManager - Stop background worker: Abp.BackgroundJobs.BackgroundJobManager DEBUG 2019-05-31 12:44:39,225 [50 ] Abp.Quartz.QuartzScheduleJobManager - Stop background worker: Abp.Quartz.QuartzScheduleJobManager

Benim schedule ortalama 4 saat çalışmaktadır. IIS timeout süresini arttırmadan bu sorunu nasıl çözebiliriz ?

İyi çalışmalar


12 Answer(s)
  • User Avatar
    1
    ismcagdas created
    Support Team

    Merhaba,

    Eğer bu tip işlemleri IIS'de çalışan web siteniz üzerinde yapmak istiyorsanız, IIS'deki ilgili AppPool'u AlwaysOn olarak işaretlemeniz gerekiyor:

    Bunu yapmaya yetkiniz yok ise, bir windows servisi üzerinde çalışacak bir background job ile yapmanızı tavsiye ederim.

    Bu şekilde yapmak isterseniz, aşağıdaki linkteki console uygulamasına benzer bir windows servisi oluşturabilirsiniz:

    https://github.com/aspnetboilerplate/aspnetboilerplate-samples/tree/master/AbpEfConsoleApp

  • User Avatar
    0
    globalbilgi created

    Merhaba, Ayrı bir console uygulaması bizim için daha iyi fakat projeyi başka bir projede resolve edemediğimiz için içerde çalıştırmıştık. Yollamış olduğunuz örnekteki gibi entity framework ü tekrar entegre edip kullanmak mı mantıklı yoksa Core katmanında oluşturduğumuz manager ve repository sınıflarını direkt kullanamak mı daha doğru olur sizce ?

  • User Avatar
    1
    ismcagdas created
    Support Team

    Merhaba,

    Core tarafında oluşturduğunuz manager ve repository sınıflarınımutlaka kullanmanız gerekiyor, yoksa code tekrarı yapmanız gerekeccektir.

    Ben sadece örnek bir console uygulamasını nasıl oluşturabileceğinizi göstermek için bu örneği payşaltım. Eğer Console uygulaması oluştururken sorun yaşarsanız biz yardımcı olmaya çalışırız.

    Teşekkürler,

  • User Avatar
    0
    globalbilgi created

    Merhaba, Schedule için bir console uygulaması oluşturuyorum. GoCoreModule deki maanger ve repository kullanacak şekilde. Fakat IHostingEnvironment gibi katmanlar resolve olamıyor. Aşağıdaki şekilde hata alıyorum. Nerede hata yapıyorum yardımcı olabilir misiniz ?

    [DependsOn(typeof(GoCoreModule))]
    public class GoScheduleModule : AbpModule
    {
        public override void Initialize()
        {
            IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
        }
    
        public override void PostInitialize()
        {
            //Configuration.IocManager.Resolve<GoJobScheduler>().Start();
        }
    }
    
    ----------------Program.cs---------------------
    
     class Program
    {
        static void Main(string[] args)
        {
            using (var bootstrapper = AbpBootstrapper.Create<GoScheduleModule>())
            {
                bootstrapper.Initialize();
    
                using (var jobs = bootstrapper.IocManager.ResolveAsDisposable<GoJobScheduler>())
                {
                    jobs.Object.Start();
                }
                Console.WriteLine("Press enter to exit...");
                Console.ReadLine();
            }
        }
    }
    
    
       public class GoJobScheduler : ISingletonDependency
    {
        //private readonly IQuartzScheduleJobManager _jobManager;
        //private readonly IConfigurationRoot _appConfiguration;
        //public GoJobScheduler(IQuartzScheduleJobManager jobManager, IHostingEnvironment env)
        //{
        //    _jobManager = jobManager;
        //    _appConfiguration = env.GetAppConfiguration();
        //}
      }
        
        Fakat IHostingEnvironment gibi katmanlar resolve olamıyor. AŞağıdaki şekilde hata alıyorum.
        
        ![11.JPG](/QA/files/72d4f3ee9c9db59fff2839ee6d424e23.JPG)
    
  • User Avatar
    0
    globalbilgi created

  • User Avatar
    0
    ismcagdas created
    Support Team

    Merhaba,

    IHostingEnvironment sadece web projeleri için kullanılabilir. Bunun yerine şuradaki gibi yapabilirsiniz: https://github.com/aspnetzero/aspnet-zero-core/blob/dev/aspnet-core/src/MyCompanyName.AbpZeroTemplate.Migrator/AbpZeroTemplateMigratorModule.cs#L22

  • User Avatar
    0
    globalbilgi created

    CoreModule 'deki IHostingEnvironment 'i kaldırdım. AbpBackgroundJob aktif etmediğim halde aşağıdaki hatayı alıyorum. Genel anlamda CoreModule 'de defaultta olanlar var.

  • User Avatar
    0
    globalbilgi created

    Merhaba,

    Bununla ilgili bir örneğiniz var mı acaba ?

    İyi çalışmalar

  • User Avatar
    0
    ismcagdas created
    Support Team

    Merhaba,

    Console uygulamanızdaki Module hangi modüllere depend oluyor onları yazabilir misiniz ? Eğer bu örnek uygulamayı [email protected] adresine gönderirseniz, sizin için bu hatayı düzeltebiliriz.

    Teşekkürler,

  • User Avatar
    0
    globalbilgi created

    Merhaba,

    Console uygulamama sadece Go.Core modulünu depend ettim. Go.Core modulü ise kendi içinde orjinal olarak indirdiğimiz katmanlar var.(AbpQuartz,AbpEmail vb..)

    Siz örnek olarak panelden indirdiğimiz projenin (Asp.Net Core & Angular) Core katmanındaki Repository ve Manager lari resolve ederek kullanılabilen çok sade bir console uygulamas örnek yapabilir misiniz ?

    İyi çalışmalar

  • User Avatar
    0
    globalbilgi created

    Merhaba,

    Bu konuda yardımınızı bekliyoruz.

  • User Avatar
    0
    ismcagdas created
    Support Team

    Merhaba,

    Sizin için şöyle bir demo hazırladık https://github.com/aspnetzero/aspnet-zero-samples/tree/master/ConsoleAppDemo. Buradaki Console uygulamasında Quartz'ı çalıştırabilirsiniz.