Esempio n. 1
0
        public static void DoWork(Func<Guid, IEnumerable<MessageDescriptor>> func)
        {
            var id = Guid.NewGuid();
            var messages = func(id).ToArray();

            var account = CloudStorageAccount.FromConfigurationSetting("mystorage");
            var client = account.CreateCloudQueueClient();
            var queue = client.GetQueueReference("fastdeployqueue");
            queue.CreateIfNotExist();

            foreach (var message in messages) {
                byte[] buffer;
                long length;
                BinaryFormatter.Serialize(message, out buffer, out length);
                queue.AddMessage(new CloudQueueMessage(buffer));
            }

            var task = new RetryTask(() => {
                using (var context = new DataContext(RoleEnvironment.GetConfigurationSettingValue("mydb"))) {
                    if (context.JobRun.Count(o => o.JobId == id && o.Status == 1) < messages.Length) {
                        throw new ApplicationException();
                    }
                }
            }).WithMaxElapsedTime(300).WithRecoverAction(() => Thread.Sleep(2000));
            RetryHelper.Invoke(task);
        }
Esempio n. 2
0
 void UpdateJob(Guid id, DateTime dateTime, int status) {
     using (var dataContext = new DataContext(RoleEnvironment.GetConfigurationSettingValue("mydb"))) {
         var entity = new JobRunInfo { Id = id, LastUpdate = dateTime, Status = status };
         dataContext.JobRun.Attach(entity);
         dataContext.Entry(entity).Property(o => o.LastUpdate).IsModified = true;
         dataContext.Entry(entity).Property(o => o.Status).IsModified = true;
         dataContext.SaveChanges();
     }
 }
Esempio n. 3
0
 void PutJob(Guid id, Guid jobId, DateTime dateTime, int status, string worker) {
     using (var dataContext = new DataContext(RoleEnvironment.GetConfigurationSettingValue("mydb"))) {
         dataContext.JobRun.Add(new JobRunInfo { Id = id, JobId = jobId, Time = dateTime, LastUpdate = dateTime, Status = status, Worker = worker });
         dataContext.SaveChanges();
     }
 }