Add hangfire
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
using System.Web.Hosting;
|
||||
using Hangfire;
|
||||
using Microsoft.Owin;
|
||||
using LeafWeb.Web;
|
||||
using Owin;
|
||||
|
||||
[assembly: OwinStartup(typeof(Startup))]
|
||||
|
||||
namespace LeafWeb.Web
|
||||
{
|
||||
public class Startup
|
||||
{
|
||||
public void Configuration(IAppBuilder app)
|
||||
{
|
||||
//GlobalConfiguration.Configuration
|
||||
// .UseSqlServerStorage("LeafWebContext");
|
||||
|
||||
app.UseHangfireDashboard();
|
||||
app.UseHangfireServer();
|
||||
|
||||
SetupRecurringJobs();
|
||||
}
|
||||
|
||||
private void SetupRecurringJobs()
|
||||
{
|
||||
//RecurringJob.AddOrUpdate<ServiceReminderEmailService>(
|
||||
// "serviceReminderJob", s => s.SendAllNotificationEmails(), Cron.Weekly(DayOfWeek.Monday, 6));
|
||||
}
|
||||
}
|
||||
|
||||
// http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html
|
||||
public class ApplicationPreload : IProcessHostPreloadClient
|
||||
{
|
||||
public void Preload(string[] parameters)
|
||||
{
|
||||
HangfireBootstrapper.Instance.Start();
|
||||
}
|
||||
}
|
||||
|
||||
public class HangfireBootstrapper : IRegisteredObject
|
||||
{
|
||||
public static readonly HangfireBootstrapper Instance = new HangfireBootstrapper();
|
||||
|
||||
private readonly object _lockObject = new object();
|
||||
private bool _started;
|
||||
|
||||
private BackgroundJobServer _backgroundJobServer;
|
||||
|
||||
private HangfireBootstrapper()
|
||||
{
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
lock (_lockObject)
|
||||
{
|
||||
if (_started) return;
|
||||
_started = true;
|
||||
|
||||
HostingEnvironment.RegisterObject(this);
|
||||
|
||||
GlobalConfiguration
|
||||
.Configuration
|
||||
.UseSqlServerStorage("LeafWebContext");
|
||||
// Specify other options here
|
||||
|
||||
_backgroundJobServer = new BackgroundJobServer();
|
||||
}
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
lock (_lockObject)
|
||||
{
|
||||
if (_backgroundJobServer != null)
|
||||
{
|
||||
_backgroundJobServer.Dispose();
|
||||
}
|
||||
|
||||
HostingEnvironment.UnregisterObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
void IRegisteredObject.Stop(bool immediate)
|
||||
{
|
||||
Stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user