コード例 #1
0
        public Task <HttpResponseMessage> Get()
        {
            HttpStatusCode httpStatusCode;

            IMonitoringApi monitoring         = JobStorage.Current.GetMonitoringApi();
            long           backgroundJobCount = monitoring.EnqueuedCount("recycler");
            var            status             = backgroundJobCount == 0 ? "not running" : "running";

            httpStatusCode = HttpStatusCode.OK;

            HttpResponseMessage httpResponseMessage        = Request.CreateResponse(httpStatusCode, new { status = status });
            TaskCompletionSource <HttpResponseMessage> tsc = new TaskCompletionSource <HttpResponseMessage>();

            tsc.SetResult(httpResponseMessage);
            return(tsc.Task);
        }
コード例 #2
0
        /// <summary>
        /// check Job is enqueued or processing
        /// </summary>
        /// <param name="actionName">full action name</param>
        /// <returns></returns>
        public static bool IsRunning(IMonitoringApi api, string actionName)
        {
            var queues = api.Queues();

            foreach (var queue in queues)
            {
                var queueName     = queue.Name;
                var enqueuedCount = Convert.ToInt32(api.EnqueuedCount(queueName));
                var enqueuedJobs  = api.EnqueuedJobs(queueName, 0, enqueuedCount);

                if (enqueuedJobs.Any(job => job.Value.Job.Method.GetFullActionName() == actionName))
                {
                    return(true);
                }
            }

            var processingCount = Convert.ToInt32(api.ProcessingCount());
            var processingJobs  = api.ProcessingJobs(0, processingCount);

            return(processingJobs.Any(job => job.Value.Job.Method.GetFullActionName() == actionName));
        }
コード例 #3
0
 public static bool JobInEsecuzione(this IMonitoringApi api)
 {
     return(api.ProcessingCount() + api.EnqueuedCount("default") > 0);
 }