コード例 #1
0
        public VcsPluginTelemetryCreator([NotNull] ITelemetryQueue telemetryQueue)
        {
            if (telemetryQueue == null)
            {
                throw new ArgumentNullException(nameof(telemetryQueue));
            }

            _telemetryQueue = telemetryQueue;
        }
コード例 #2
0
        /// <summary>
        ///     Called by the <see cref="T:Quartz.IScheduler"/> when a <see cref="T:Quartz.ITrigger"/>
        ///     fires that is associated with the <see cref="T:Quartz.IJob"/>.
        /// </summary>
        /// <remarks>
        ///     The implementation may wish to set a  result object on the
        ///     JobExecutionContext before this method exits.  The result itself
        ///     is meaningless to Quartz, but may be informative to
        ///     <see cref="T:Quartz.IJobListener"/>s or
        ///     <see cref="T:Quartz.ITriggerListener"/>s that are watching the job's
        ///     execution.
        /// </remarks>
        /// <param name="context">The execution context.</param>
        public virtual void Execute(IJobExecutionContext context)
        {
            JobExecutionContext = context;

            var log = Container.Resolve <ILog>();

            var unitOfWork = Container.Resolve <IUnitOfWork>();

            var timeService = Container.Resolve <ITimeService>();

            ITelemetryQueue telemetryQueue = null;

            if (TelemetryRequired)
            {
                telemetryQueue = Container.Resolve <ITelemetryQueue>();

                telemetryQueue.AutoCommit = false;
            }

            var totalEntitiesProcessed = 0;

            var iterationEntitiesProcessed = 0;

            var startTime = timeService.GetUtc();

            do
            {
                log.Trace($"Scheduler job started. Job name='{GetType().FullName}'");

                try
                {
                    using (var transaction = unitOfWork.BeginTransaction())
                    {
                        iterationEntitiesProcessed = Process();

                        unitOfWork.Commit();

                        transaction.Commit();
                    }

                    totalEntitiesProcessed += iterationEntitiesProcessed;

                    log.Trace(
                        $"Scheduler job iteration done. Job name='{GetType().FullName}', Entities processed='{iterationEntitiesProcessed}'");

                    OnIterationDone(iterationEntitiesProcessed);
                }
                catch (Exception ex)
                {
                    unitOfWork.Reset();

                    log.Error($"Scheduler job failed. Job name='{GetType().FullName}'", ex);

                    OnFailed(ex);
                }

                if (TelemetryRequired)
                {
                    telemetryQueue?.Commit();
                }
            }while(iterationEntitiesProcessed > 0);

            var finishTime = timeService.GetUtc();

            var executionTime = finishTime - startTime;

            log.Debug(
                $"Scheduler job execution finished. Job name='{GetType().FullName}', Entities processed='{totalEntitiesProcessed}', Execution time='{executionTime}'");
        }
コード例 #3
0
 public void Init(ITelemetryRequester telemetryRequester)
 {
     telemetryQueue = new SafeTelemetryQueue(telemetryRequester);
     lastTimestamp  = Double.NegativeInfinity;
     initialized    = true;
 }