/// <summary> /// This ensures that the framework migrations have run for the distributed locking feature, as existing Orchard installations will not have the required tables when upgrading. /// </summary> private void EnsureDistributedLockSchemaExists() { // Ensure the distributed lock record schema exists. var schemaBuilder = new SchemaBuilder(_dataMigrationInterpreter); var distributedLockSchemaBuilder = new DistributedLockSchemaBuilder(_shellSettings, schemaBuilder); if (distributedLockSchemaBuilder.EnsureSchema()) { _transactionManager.RequireNew(); } }
public void ProcessQueue() { var schemaBuilder = new SchemaBuilder(_dataMigrationInterpreter); DistributedLockSchemaBuilder distributedLockSchemaBuilder = new DistributedLockSchemaBuilder(_shellSettings, schemaBuilder); distributedLockSchemaBuilder.EnsureSchema(); IDistributedLock @lock; if (_distributedLockService.Value.TryAcquireLock(GetType().FullName, TimeSpan.FromMinutes(5), out @lock)) { using (@lock) { IEnumerable <QueuedJobRecord> messages; while ((messages = _jobsQueueManager.Value.GetJobs(0, 10).ToArray()).Any()) { foreach (var message in messages) { ProcessMessage(message); } } } } }