如何检查Azure scheculer作业集合中剩余的作业数

如何检查Azure scheculer作业集合中剩余的作业数,azure,azure-scheduler,Azure,Azure Scheduler,我已经通过下面的博客实现了Azure调度器 现在我可以在调度程序中创建/更新/删除作业,但如何检查作业集合是否已满?基本上,只要当前jobcollection已满,我就会创建另一个集合 共享我的代码片段 public class AzureSchedulerStorage : ISchedulerStorage { private CertificateCloudCredentials credentials; //private CloudSe

我已经通过下面的博客实现了Azure调度器

现在我可以在调度程序中创建/更新/删除作业,但如何检查作业集合是否已满?基本上,只要当前jobcollection已满,我就会创建另一个集合

共享我的代码片段

    public class AzureSchedulerStorage : ISchedulerStorage
    {
        private CertificateCloudCredentials credentials;
        //private CloudServiceManagementClient cloudServiceClient;
        private string cloudServiceName;
       // private IHalseyLogger logger;

        public AzureSchedulerStorage(string cloudServiceName, CertificateCloudCredentials credentials)
        {
            this.cloudServiceName = cloudServiceName;
            this.credentials = credentials;
          //  this.logger = logger;
        }

        public SchedulerOperationStatusResponse CreateJobCollection(string jobCollectionName)
        {
            var schedulerServiceClient = new SchedulerManagementClient(credentials);
            var jobCollectionCreateParameters = new JobCollectionCreateParameters()
            {
                Label = jobCollectionName,
                IntrinsicSettings = new JobCollectionIntrinsicSettings()
                {
                    Plan = JobCollectionPlan.Standard,
                    Quota = new JobCollectionQuota()
                    {
                        MaxJobCount = 50,
                        MaxRecurrence = new JobCollectionMaxRecurrence()
                        {
                            Frequency = JobCollectionRecurrenceFrequency.Minute
                        }
                    }
                }
            };

            var result = schedulerServiceClient.JobCollections.Create(this.cloudServiceName, jobCollectionName, jobCollectionCreateParameters);
            return result;

        }

        public JobCollectionGetResponse GetJobCollection(string jobCollectionName)
        {
            var schedulerServiceClient = new SchedulerManagementClient(credentials);
            var result = schedulerServiceClient.JobCollections.Get(this.cloudServiceName, jobCollectionName);
            return result;
        }

        public void CreateOrUpdate(string jobcollectionName, string jobId, DateTime startDate)
        {
            var schedulerClient = new SchedulerClient(this.cloudServiceName, jobcollectionName, this.credentials);
            var job = new JobCreateOrUpdateParameters()
            {
                Action = new JobAction()
                {
                    Type = JobActionType.Https,
                    Request = new JobHttpRequest()
                    {
                        Body = "customer=sandrino&command=sendnewsletter",
                        Headers = new Dictionary<string, string>()
                        {
                            { "Content-Type", "application/x-www-form-urlencoded" },
                            { "x-something", "value123" }
                        },
                        Method = "POST",
                        Uri = new Uri("http://postcatcher.in/catchers/527af9acfe325802000001cb"),

                    }
                },

                StartTime = startDate,
            };

            var result = schedulerClient.Jobs.CreateOrUpdate(jobId, job);
        }
    }
}
公共类AzureSchedulerStorage:isSchedulerStorage
{
私人证书私人证书;
//私有云服务管理客户端云服务客户端;
私有字符串cloudServiceName;
//私人IHalseyLogger;
public AzureSchedulerStorage(字符串cloudServiceName、CertificateCloudCredentials凭据)
{
this.cloudServiceName=cloudServiceName;
this.credentials=凭证;
//this.logger=记录器;
}
公共SchedulerOperationStatusResponse CreateJobCollection(字符串jobCollectionName)
{
var schedulerServiceClient=新SchedulerManagementClient(凭证);
var jobCollectionCreateParameters=new jobCollectionCreateParameters()
{
Label=jobCollectionName,
IntrinsicSettings=new JobCollectionInSicSettings()
{
计划=作业收集计划。标准,
配额=新作业收集配额()
{
MaxJobCount=50,
MaxRecurrence=新作业集合MaxRecurrence()
{
频率=作业收集重复频率。分钟
}
}
}
};
var result=schedulerServiceClient.JobCollections.Create(this.cloudServiceName、jobCollectionName、jobCollectionCreateParameters);
返回结果;
}
public JobCollectionGetResponse GetJobCollection(字符串jobCollectionName)
{
var schedulerServiceClient=新SchedulerManagementClient(凭证);
var result=schedulerServiceClient.JobCollections.Get(this.cloudServiceName,jobCollectionName);
返回结果;
}
public void CreateOrUpdate(字符串jobcollectionName、字符串jobId、日期时间startDate)
{
var schedulerClient=new schedulerClient(this.cloudServiceName、jobcollectionName、this.credentials);
var job=new JobCreateOrUpdateParameters()
{
操作=新作业操作()
{
Type=JobActionType.Https,
请求=新作业HttpRequest()
{
Body=“customer=sandrino&command=sendnewsletter”,
Headers=newdictionary()
{
{“内容类型”,“应用程序/x-www-form-urlencoded”},
{“x-something”,“value123”}
},
Method=“POST”,
Uri=新的Uri(“http://postcatcher.in/catchers/527af9acfe325802000001cb"),
}
},
开始时间=开始日期,
};
var result=schedulerClient.Jobs.CreateOrUpdate(jobId,job);
}
}
}

在查看调度器API之后,似乎没有直接的方法来获取作业集合的长度


可能您可以尝试创建一个作业,如果出现配额错误,那么您可以创建一个新作业集合并添加该作业。

是的,我也在考虑捕获配额异常并创建另一个集合,但只是想他们为什么会错过这样一个琐碎的事情呢,您可以获取作业集合中的所有作业,以确定是否还有剩余容量,或者按照建议,尝试创建作业并处理错误。