public void RegisterCustomRouting(System.Web.Routing.RouteCollection routes) { base.ExecuteMethod("RegisterCustomRouting", delegate() { this.IFoundation.Container.RegisterInstance <INotifySynchronizer>(new ElasticSyncNotifySynchronizer(this.IFoundation)); IDaemonManager daemonManager = this.IFoundation.GetDaemonManager(); ISettingsResolver settingsResolver = this.IFoundation.Resolve <ISettingsResolver>(); bool isBackPane = settingsResolver.IsBackPane(); bool isHydrate = settingsResolver.IsHydrate(); if (isBackPane) { DaemonConfig config = new DaemonConfig() { InstanceName = string.Format(ElasticSearchDaemon.DAEMON_NAME_FORMAT, Agents.AGENT_DEFAULT), ContinueOnError = true, IntervalMilliSeconds = (int)TimeSpan.FromSeconds(30).TotalMilliseconds, StartDelayMilliSeconds = 15, TaskConfiguration = string.Empty }; daemonManager.RegisterDaemon(config, new ElasticSearchDaemon(this.IFoundation, Agents.AGENT_DEFAULT), true); config = new DaemonConfig() { InstanceName = string.Format(ElasticSearchDaemon.DAEMON_NAME_FORMAT, Agents.AGENT_STATS), ContinueOnError = true, IntervalMilliSeconds = (int)TimeSpan.FromSeconds(30).TotalMilliseconds, StartDelayMilliSeconds = 25, TaskConfiguration = string.Empty }; daemonManager.RegisterDaemon(config, new ElasticSearchDaemon(this.IFoundation, Agents.AGENT_STATS), true); } }); }
/// <summary> /// Not Aspect Wrapped /// </summary> protected static TWorker EnsureWorker <TWorker>(IFoundation foundation, string workerName, int millisecondInterval = 5000) where TWorker : WorkerBase <TRequest> { IDaemonManager daemonManager = foundation.GetDaemonManager(); IDaemonTask daemonTask = daemonManager.GetRegisteredDaemonTask(workerName); if (daemonTask == null) { lock (_RegistrationLock) { daemonTask = daemonManager.GetRegisteredDaemonTask(workerName); if (daemonTask == null) { if (millisecondInterval <= 1000) { millisecondInterval = 5000; // if you give bad data, we force to 5 seconds. } DaemonConfig config = new DaemonConfig() { InstanceName = workerName, ContinueOnError = true, IntervalMilliSeconds = millisecondInterval, StartDelayMilliSeconds = 0, TaskConfiguration = string.Empty }; TWorker worker = (TWorker)foundation.Container.Resolve(typeof(TWorker), null); daemonManager.RegisterDaemon(config, worker, true); } } daemonTask = daemonManager.GetRegisteredDaemonTask(workerName); } return(daemonTask as TWorker); }
public void RegisterCustomRouting(System.Web.Routing.RouteCollection routes) { base.ExecuteMethod("RegisterCustomRouting", delegate() { AmazonUploadFile uploadFile = new AmazonUploadFile(this.IFoundation); this.IFoundation.Container.RegisterInstance <IUploadFiles>(uploadFile); this.IFoundation.Container.RegisterInstance <INotifyEncoder>(uploadFile); this.IFoundation.Container.RegisterInstance <IProcessImage>(new AmazonImageResizeDaemon(this.IFoundation)); // isolated instance, isnt actually ran as a daemon IDaemonManager daemonManager = this.IFoundation.GetDaemonManager(); ISettingsResolver settingsResolver = this.IFoundation.Resolve <ISettingsResolver>(); bool isBackPane = settingsResolver.IsBackPane(); bool isLocalHost = settingsResolver.IsLocalHost(); bool isHydrate = settingsResolver.IsHydrate(); if (isBackPane && !isLocalHost && !isHydrate) { DaemonConfig config = new DaemonConfig() { InstanceName = AmazonEncodingDaemon.DAEMON_NAME, ContinueOnError = true, IntervalMilliSeconds = (int)TimeSpan.FromMinutes(1).TotalMilliseconds, StartDelayMilliSeconds = 15, TaskConfiguration = string.Empty }; daemonManager.RegisterDaemon(config, new AmazonEncodingDaemon(this.IFoundation), true); config = new DaemonConfig() { InstanceName = AmazonImageResizeDaemon.DAEMON_NAME, ContinueOnError = true, IntervalMilliSeconds = (int)TimeSpan.FromMinutes(1).TotalMilliseconds, StartDelayMilliSeconds = 15, TaskConfiguration = string.Empty }; daemonManager.RegisterDaemon(config, new AmazonImageResizeDaemon(this.IFoundation), true); } }); }