public void Execute(CancellationToken cancellationToken) { Logger.DebugFormat("Aggregating records in 'Counter' table..."); int removedCount = 0; do { _storage.UseConnection(connection => { removedCount = connection.Execute( GetAggregationQuery(), new { now = DateTime.UtcNow, count = NumberOfRecordsInSinglePass }); }); if (removedCount >= NumberOfRecordsInSinglePass) { cancellationToken.WaitHandle.WaitOne(DelayBetweenPasses); cancellationToken.ThrowIfCancellationRequested(); } } while (removedCount >= NumberOfRecordsInSinglePass); cancellationToken.WaitHandle.WaitOne(_interval); }
public override string CreateExpiredJob(Job job, IDictionary <string, string> parameters, DateTime createdAt, TimeSpan expireIn) { if (job == null) { throw new ArgumentNullException(nameof(job)); } if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } var invocationData = InvocationData.SerializeJob(job); invocationData.Arguments = null; var arguments = InvocationData.SerializeJob(job); Logger.TraceFormat("CreateExpiredJob={0}", SerializationHelper.Serialize(invocationData, SerializationOption.User)); return(_storage.UseConnection(connection => { var jobId = connection.GetNextJobId(); var oracleDynamicParameters = new OracleDynamicParameters(); oracleDynamicParameters.AddDynamicParams(new { ID = jobId, CREATED_AT = createdAt, EXPIRE_AT = createdAt.Add(expireIn) }); oracleDynamicParameters.Add("INVOCATION_DATA", SerializationHelper.Serialize(invocationData, SerializationOption.User), OracleMappingType.NClob, ParameterDirection.Input); oracleDynamicParameters.Add("ARGUMENTS", arguments.Arguments, OracleMappingType.NClob, ParameterDirection.Input); connection.Execute( @" INSERT INTO HF_JOB (ID, INVOCATION_DATA, ARGUMENTS, CREATED_AT, EXPIRE_AT) VALUES (:ID, :INVOCATION_DATA, :ARGUMENTS, :CREATED_AT, :EXPIRE_AT) ", oracleDynamicParameters); if (parameters.Count > 0) { var parameterArray = new object[parameters.Count]; var parameterIndex = 0; foreach (var parameter in parameters) { var dynamicParameters = new OracleDynamicParameters(); dynamicParameters.AddDynamicParams(new { JOB_ID = jobId, NAME = parameter.Key }); dynamicParameters.Add("VALUE", parameter.Value, OracleMappingType.NClob, ParameterDirection.Input); parameterArray[parameterIndex++] = dynamicParameters; } connection.Execute(@"INSERT INTO HF_JOB_PARAMETER (ID, NAME, VALUE, JOB_ID) VALUES (HF_SEQUENCE.NEXTVAL, :NAME, :VALUE, :JOB_ID)", parameterArray); } return jobId.ToString(); })); }
public override string CreateExpiredJob(Job job, IDictionary <string, string> parameters, DateTime createdAt, TimeSpan expireIn) { if (job == null) { throw new ArgumentNullException("job"); } if (parameters == null) { throw new ArgumentNullException("parameters"); } var invocationData = InvocationData.Serialize(job); Logger.TraceFormat("CreateExpiredJob={0}", JobHelper.ToJson(invocationData)); return(_storage.UseConnection(connection => { var param = new DynamicParameters(); param.Add("invocationData", JobHelper.ToJson(invocationData), direction: System.Data.ParameterDirection.Input); param.Add("arguments", invocationData.Arguments, direction: System.Data.ParameterDirection.Input); param.Add("createdAt", createdAt, direction: System.Data.ParameterDirection.Input); param.Add("expireAt", createdAt.Add(expireIn), direction: System.Data.ParameterDirection.Input); param.Add("jobId", dbType: System.Data.DbType.Int32, direction: System.Data.ParameterDirection.Output); connection.Execute( "insert into HANGFIRE_JOB (InvocationData, Arguments, CreatedAt, ExpireAt) " + "values (:invocationData, :arguments, :createdAt, :expireAt) returning ID into :jobId", param); var jobId = param.Get <int>("jobId").ToString(); //string jobId = id.ToString(); if (parameters.Count > 0) { var parameterArray = new object[parameters.Count]; int parameterIndex = 0; foreach (var parameter in parameters) { parameterArray[parameterIndex++] = new { jobId = jobId, name = parameter.Key, value = parameter.Value }; } connection.Execute( "insert into HANGFIRE_JOBParameter (JobId, Name, Value) values (:jobId, :name, :value)", parameterArray); } return jobId; })); }