protected virtual AcquiredJobs AcquireJobs(JobAcquisitionContext context, IJobAcquisitionStrategy acquisitionStrategy, ProcessEngineImpl currentProcessEngine) { ICommandExecutor commandExecutor = ((ProcessEngineConfigurationImpl)currentProcessEngine.ProcessEngineConfiguration).CommandExecutorTxRequired; var numJobsToAcquire = acquisitionStrategy.GetNumJobsToAcquire(currentProcessEngine.Name); AcquiredJobs acquiredJobs = null; if (numJobsToAcquire > 0) { JobExecutor.LogAcquisitionAttempt(currentProcessEngine); acquiredJobs = commandExecutor.Execute(JobExecutor.GetAcquireJobsCmd(numJobsToAcquire)); } else { acquiredJobs = new AcquiredJobs(numJobsToAcquire); } context.SubmitAcquiredJobs(currentProcessEngine.Name, acquiredJobs); JobExecutor.LogAcquiredJobs(currentProcessEngine, acquiredJobs.Size()); JobExecutor.LogAcquisitionFailureJobs(currentProcessEngine, acquiredJobs.NumberOfJobsFailedToLock); Log.AcquiredJobs(currentProcessEngine.Name, acquiredJobs); return(acquiredJobs); }
/// <summary> /// Reconfigure the acquisition strategy based on the current cycle's acquisition context. /// A strategy implementation may update internal data structure to calculate a different wait time /// before the next cycle of acquisition is performed. /// </summary> protected internal virtual void ConfigureNextAcquisitionCycle(JobAcquisitionContext acquisitionContext, IJobAcquisitionStrategy acquisitionStrategy) { acquisitionStrategy.Reconfigure(acquisitionContext); }
protected override void ConfigureNextAcquisitionCycle(JobAcquisitionContext context, IJobAcquisitionStrategy acquisitionStrategy) { base.ConfigureNextAcquisitionCycle(context, acquisitionStrategy); var timeBetweenCurrentAndNextAcquisition = acquisitionStrategy.WaitTime; WaitEvents.Add(new RecordedWaitEvent(DateTime.Now.Ticks, timeBetweenCurrentAndNextAcquisition)); }
protected override AcquiredJobs AcquireJobs(JobAcquisitionContext context, IJobAcquisitionStrategy configuration, ProcessEngineImpl currentProcessEngine) { AcquisitionEvents.Add(new RecordedAcquisitionEvent(DateTime.Now.Ticks, configuration.GetNumJobsToAcquire(currentProcessEngine.Name))); return(base.AcquireJobs(context, configuration, currentProcessEngine)); }