public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseHangfireDashboard("/BackgroundJobs", new DashboardOptions { DashboardTitle = "Eren Yýlmaz Hangfire Dashboard", //TITLE AppPath = "/weatherforecast" //BACK TO SITE }); //HANGFIRE SERVER CONFIGURATION app.UseHangfireServer(new BackgroundJobServerOptions() { //5 SANÝYEDE BÝR KONTROL ET SchedulePollingInterval = TimeSpan.FromSeconds(5) }); app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); RecurringJobs.DatabaseBackupOperation(); }
// C'tor public Application(ILogger logger, IConfigurationRoot config) { _logger = logger; _container = AutofacConfig.Configure(_logger); GlobalConfiguration.Configuration.UseSqlServerStorage( config.GetConnectionString("SeedToolsDataStoreConnection")); GlobalConfiguration.Configuration.UseActivator(new AutoFacHangfireJobActivator(_container)); RecurringJobs.Configure(); }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); //app.UseHangfireDashboard(); app.UseHangfireDashboard("/ademolgunerhangfire", new DashboardOptions { DashboardTitle = "Adem Olguner Hangfire DashBoard", // Dashboard sayfasına ait Başlık alanını değiştiririz. AppPath = "/Home/HangfireAbout", // Dashboard üzerinden "back to site" button Authorization = new[] { new HangfireDashboardAuthorizationFilter() }, // Güvenlik için Authorization İşlemleri }); //app.UseHangfireServer(); app.UseHangfireServer(new BackgroundJobServerOptions { /* Hangfire Server, planlanan işleri sıralarına göre sıralamak için zamanlamayı düzenli olarak denetler ve * çalışanların bunları yürütmesine olanak tanır. * Varsayılan olarak, kontrol aralığı 15 saniyeye eşittir, ancak BackgroundJobServer yapıcısına ilettiğiniz seçeneklerde * SchedulePollingInterval özelliğini ayarlayarak değiştirebilirsiniz */ SchedulePollingInterval = TimeSpan.FromSeconds(30), //Arkaplanda çalışacak Job sayısını değiştirebiliriz. WorkerCount = Environment.ProcessorCount * 5 }); GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute { Attempts = 7 }); // Tanımlanan zaman diliminde sürekli çalıştığı için tetiklenmesine gerek yok, // burada tanımlayabiliriz. tanımlayabiliriz. RecurringJobs.DatabaseBackupOperation(); }
public async Task <ActionResult <RecurringKeyword> > PostRecurringKeyword(RecurringKeyword recurringKeyword) { if (!UrlHelper.isValidUrl(recurringKeyword.Url) || !UrlHelper.isValidCountryCode(recurringKeyword.CountryDomain)) { return(BadRequest()); } if (!NewRecurringKeywordExistsAlready(recurringKeyword)) { _context.RecurringKeyword.Add(recurringKeyword); await _context.SaveChangesAsync(); RecurringJobs scrappingInstance = new RecurringJobs(_context, options); //cron job running every day at 7 am to get the position for the day RecurringJob.AddOrUpdate("RecurringKeyword-" + recurringKeyword.RecurringKeyworId, () => scrappingInstance.GoogleScrappingJob(recurringKeyword.Query, recurringKeyword.Url, recurringKeyword.CountryDomain, recurringKeyword.RecurringKeyworId), Cron.Daily); //create fake data do show on graph for (int i = 0; i < 7; i++) { Random random = new Random(); _context.RecurringKeywordPosition.Add(new RecurringKeywordPosition { RecurringKeyworId = recurringKeyword.RecurringKeyworId, Date = DateTime.Today.AddDays(-i - 1), Positions = Convert.ToInt32((random.NextDouble() * (10 - 1) + 1)).ToString() }); } await _context.SaveChangesAsync(); return(CreatedAtAction("GetRecurringKeyword", new { id = recurringKeyword.RecurringKeyworId }, recurringKeyword)); } else { return(Conflict()); } }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { var hangfireSettings = Configuration.GetSection(nameof(HangfireSettings)).Get <HangfireSettings>(); //www.mysite.com/hangfire app.UseHangfireDashboard("/hangfire", new DashboardOptions { DashboardTitle = "Cihat SOLAK Hangfire Dashboard", //Dashboard ekranýndaki baþlýk alaný. AppPath = "https://github.com/cihatsolak", //Dashboard üzerindeki "back to site" butonu, Authorization = new[] { new HangfireCustomBasicAuthenticationFilter { User = hangfireSettings.UserName, Pass = hangfireSettings.Password } } //Güvenlik için authorization iþlemleri }); app.UseHangfireServer(new BackgroundJobServerOptions { /* * Hangfire server, planlanan iþleri sýralarýna göre sýralamak için zamanlamayý düzenli olarak denetler ve çalýþanlarýn bunlarý yürütmesine olanak tanýr. * Varsayýlan olarak, kontrol aralýðý 15 saniyeye eþittir ancak SchedulePollingInterval özelliðini ayarlayarak deðiþtirebiliriz. */ SchedulePollingInterval = TimeSpan.FromMinutes(1), //1 dakikada 1 kez kontrol et ve görevleri sýrala görevleri sýrala. WorkerCount = Environment.ProcessorCount * 5, //Arka planda çalýþacak job sayýsýný ifade eder. Queues = new[] { "general" } }); GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute { Attempts = 7 }); //Global seviyede bir job hata alýrsa 7 kere tekrarlamasýný söyledik. //Recurring Jobs RecurringJobs.DeleteLogJob(); app.CustomConfigure(); }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ToDoListDbContext db) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } db.Database.EnsureCreated(); app.UseRouting(); app.UseOpenApi(); app.UseSwaggerUi3(); app.UseHangfireDashboard(); app.UseHangfireServer(); RecurringJobs.SendAllTasksDaily(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
public IActionResult AddImage() { RecurringJobs.ReportingJob(); return(View()); }
public IActionResult SetJobs() { RecurringJobs.SessionRequest(); return(Ok()); }