コード例 #1
0
        /// <summary>
        /// Constructs Job Storage by database connection string, name and options
        /// </summary>
        /// <param name="connectionString">MongoDB connection string</param>
        /// <param name="databaseName">Database name</param>
        /// <param name="storageOptions">Storage options</param>
        public MongoStorage(string connectionString, string databaseName, MongoStorageOptions storageOptions)
        {
            if (string.IsNullOrWhiteSpace(connectionString))
            {
                throw new ArgumentNullException(nameof(connectionString));
            }
            if (string.IsNullOrWhiteSpace(databaseName))
            {
                throw new ArgumentNullException(nameof(databaseName));
            }
            if (storageOptions == null)
            {
                throw new ArgumentNullException(nameof(storageOptions));
            }

            _connectionString = connectionString;
            _databaseName     = databaseName;
            _storageOptions   = storageOptions;

            Connection = new HangfireDbContext(connectionString, databaseName, storageOptions.Prefix);
            Connection.Init(_storageOptions);

            var defaultQueueProvider = new MongoJobQueueProvider(_storageOptions);

            QueueProviders = new PersistentJobQueueProviderCollection(defaultQueueProvider);
        }
コード例 #2
0
        private static void RecreateDatabaseAndInstallObjects()
        {
            using (HangfireDbContext context = new HangfireDbContext(ConnectionUtils.GetConnectionString(), ConnectionUtils.GetDatabaseName()))
            {
                try
                {
                    context.Init();

                    context.Identifiers.DeleteMany(new BsonDocument());
                    context.DistributedLock.DeleteMany(new BsonDocument());
                    context.AggregatedCounter.DeleteMany(new BsonDocument());
                    context.Counter.DeleteMany(new BsonDocument());
                    context.Hash.DeleteMany(new BsonDocument());
                    context.Job.DeleteMany(new BsonDocument());
                    context.JobParameter.DeleteMany(new BsonDocument());
                    context.JobQueue.DeleteMany(new BsonDocument());
                    context.List.DeleteMany(new BsonDocument());
                    context.Server.DeleteMany(new BsonDocument());
                    context.Set.DeleteMany(new BsonDocument());
                    context.State.DeleteMany(new BsonDocument());
                }
                catch (MongoException ex)
                {
                    throw new InvalidOperationException("Unable to cleanup database.", ex);
                }
            }
        }
コード例 #3
0
        private static void RecreateDatabaseAndInstallObjects()
        {
            using (HangfireDbContext context = new HangfireDbContext(ConnectionUtils.GetConnectionString(), ConnectionUtils.GetDatabaseName()))
            {
                context.Init();

                MongoCollection[] collections =
                {
                    context.DistributedLock,
                    context.Counter,
                    context.Hash,
                    context.Job,
                    context.JobParameter,
                    context.JobQueue,
                    context.List,
                    context.Server,
                    context.Set,
                    context.State
                };

                foreach (MongoCollection collection in collections)
                {
                    WriteConcernResult result = collection.RemoveAll();
                    if (result.Ok == false)
                    {
                        throw new InvalidOperationException("Unable to cleanup database.");
                    }
                }
            }
        }