Example #1
0
 public virtual void AddJob(SerializableOddJob jobData)
 {
     using (var conn = _jobQueueConnectionFactory.CreateDataConnection(_mappingSchema.MappingSchema))
     {
         _addJobImpl(jobData, conn);
     }
 }
Example #2
0
 public SqlDbOddJobMethodGenericInfo[] GetGenericDataForJob(SerializableOddJob jobData)
 {
     return(jobData.MethodGenericTypes.Select((q, i) => new SqlDbOddJobMethodGenericInfo()
     {
         JobGuid = jobData.JobId,
         ParamOrder = i,
         ParamTypeName = q
     }).ToArray());
 }
        public ISqlDbJobQueueTableConfiguration GetConfigurationForJob(SerializableOddJob job)
        {
            if (_queueTableMappings.ContainsKey(job.QueueName))
            {
                return(_queueTableMappings[job.QueueName]);
            }

            return(_defaultTableConfiguration);
        }
Example #4
0
 public SqlCommonOddJobParamMetaData[] GetParamDataForJob(SerializableOddJob jobData)
 {
     return(jobData.JobArgs.Select(q => new SqlCommonOddJobParamMetaData()
     {
         JobGuid = jobData.JobId,
         ParamOrdinal = q.Ordinal,
         SerializedValue = q.Value,
         SerializedType = q.TypeName,
         ParameterName = q.Name
     }).ToArray());
 }
Example #5
0
        /*
         * public void AddJob_Idempotent(SerializableOddJob jobData, DataConnection conn)
         * {
         *  var mergeSource1 = new[] {GetMetaDataForJob(jobData)};
         *  var mergeSource2 = GetParamDataForJob(jobData);
         *  var mergeSource3 = GetGenericDataForJob(jobData);
         *  var table = _tableResolver.GetConfigurationForJob(jobData);
         *  conn.GetTable<SqlCommonDbOddJobMetaData>().TableName(table.QueueTableName).Merge()
         *      .Using(mergeSource1)
         *      .On((q, s) => q.QueueName == s.QueueName && q.MethodName == s.MethodName &&
         *                    q.TypeExecutedOn == s.TypeExecutedOn)
         *      .InsertWhenNotMatched();
         *  conn.GetTable<SqlCommonOddJobParamMetaData>().TableName(table.ParamTableName).Merge()
         *      .Using(mergeSource2)
         *      .On((q, s) => q.JobGuid == s.JobGuid && q.ParamOrdinal == s.ParamOrdinal)
         *      .InsertWhenNotMatched();
         *  conn.GetTable<SqlDbOddJobMethodGenericInfo>().TableName(table.JobMethodGenericParamTableName).Merge()
         *      .Using(mergeSource3)
         *      .On((q, s) => q.JobGuid == s.JobGuid && q.ParamOrder == s.ParamOrder)
         *      .InsertWhenNotMatched();
         * }
         */

        public SqlCommonDbOddJobMetaData GetMetaDataForJob(SerializableOddJob jobData)
        {
            return(new SqlCommonDbOddJobMetaData()
            {
                QueueName = jobData.QueueName,
                TypeExecutedOn = jobData.TypeExecutedOn,
                MethodName = jobData.MethodName,
                DoNotExecuteBefore = jobData.ExecutionTime,
                JobGuid = jobData.JobId,
                Status = JobStates.Inserting,
                CreatedDate = DateTime.Now,
                MaxRetries = (jobData.RetryParameters == null ? 0 : (int)jobData.RetryParameters.MaxRetries),
                MinRetryWait =
                    jobData.RetryParameters == null ? 0 : (int)jobData.RetryParameters.MinRetryWait.TotalSeconds,
                RetryCount = 0
            });
        }
Example #6
0
        private void _addJobImpl(SerializableOddJob jobData, DataConnection conn)
        {
            var table = _tableResolver.GetConfigurationForJob(jobData);
            //var jobMetaData = GetMetaDataForJob(jobData);
            var paramData      = GetParamDataForJob(jobData);
            var jobGenParams   = GetGenericDataForJob(jobData);
            var insertedIdExpr = conn.GetTable <SqlCommonDbOddJobMetaData>().TableName(table.QueueTableName)
                                 .Value(q => q.QueueName, jobData.QueueName)
                                 .Value(q => q.TypeExecutedOn, jobData.TypeExecutedOn)
                                 .Value(q => q.MethodName, jobData.MethodName)
                                 .Value(q => q.DoNotExecuteBefore, jobData.ExecutionTime)
                                 .Value(q => q.JobGuid, jobData.JobId)
                                 .Value(q => q.Status, JobStates.Inserting)
                                 .Value(q => q.CreatedDate, DateTime.Now)
                                 .Value(q => q.MaxRetries, (jobData.RetryParameters == null ? 0 : (int?)jobData.RetryParameters.MaxRetries))
                                 .Value(q => q.MinRetryWait,
                                        jobData.RetryParameters == null ? 0 : (int?)jobData.RetryParameters.MinRetryWait.TotalSeconds)
                                 .Value(q => q.RetryCount, 0);
            var insertedId = insertedIdExpr.InsertWithInt64Identity();

            if (paramData.Length > 0)
            {
                conn.GetTable <SqlCommonOddJobParamMetaData>().TableName(table.ParamTableName)
                .BulkCopy(BulkOptions, paramData);
            }

            if (jobGenParams.Length > 0)
            {
                conn.GetTable <SqlDbOddJobMethodGenericInfo>().TableName(table.JobMethodGenericParamTableName)
                .BulkCopy(BulkOptions, jobGenParams);
            }


            conn.GetTable <SqlCommonDbOddJobMetaData>().TableName(table.QueueTableName).Where(q => q.Id == insertedId)
            .Set(q => q.Status, JobStates.New)
            .Update();
        }