/// <summary>
        /// Configures Hangfire to use Tags.
        /// </summary>
        /// <param name="configuration">Global configuration</param>
        /// <param name="options">Options for tags</param>
        /// <returns></returns>
        public static IGlobalConfiguration UseTagsWithMemory(this IGlobalConfiguration configuration, TagsOptions options = null)
        {
            options = options ?? new TagsOptions();

            options.Storage = new MemoryTagsServiceStorage();
            var config = configuration.UseTags(options);

            return(config);
        }
Example #2
0
        /// <summary>
        /// Configures Hangfire to use Tags.
        /// </summary>
        /// <param name="configuration">Global configuration</param>
        /// <param name="options">Options for tags</param>
        /// <param name="sqlOptions">Options for sql storage</param>
        /// <returns></returns>
        public static IGlobalConfiguration UseTagsWithSql(this IGlobalConfiguration configuration, TagsOptions options = null, SqlServerStorageOptions sqlOptions = null)
        {
            options    = options ?? new TagsOptions();
            sqlOptions = sqlOptions ?? new SqlServerStorageOptions();

            options.Storage = new SqlTagsServiceStorage(sqlOptions);
            var config = configuration.UseTags(options);

            return(config);
        }
        /// <summary>
        /// Configures Hangfire to use Tags.
        /// </summary>
        /// <param name="configuration">Global configuration</param>
        /// <param name="options">Options for tags</param>
        /// <param name="sqlOptions">Options for sql storage</param>
        /// <param name="jobStorage">The jobStorage for which this configuration is used.</param>
        /// <returns></returns>
        public static IGlobalConfiguration UseTagsWithPostgreSql(this IGlobalConfiguration configuration, TagsOptions options = null, PostgreSqlStorageOptions sqlOptions = null, JobStorage jobStorage = null)
        {
            options    = options ?? new TagsOptions();
            sqlOptions = sqlOptions ?? new PostgreSqlStorageOptions();

            var storage = new PostgreSqlTagsServiceStorage(sqlOptions);

            (jobStorage ?? JobStorage.Current).Register(options, storage);

            var config = configuration.UseTags(options);

            return(config);
        }
        /// <summary>
        /// Configures Hangfire to use Tags.
        /// </summary>
        /// <param name="configuration">Global configuration</param>
        /// <param name="options">Options for tags</param>
        /// <param name="redisOptions">Options for Redis storage</param>
        /// <param name="jobStorage">The jobStorage for which this configuration is used.</param>
        /// <returns></returns>
        public static IGlobalConfiguration UseTagsWithRedis(this IGlobalConfiguration configuration, TagsOptions options = null, RedisStorageOptions redisOptions = null, JobStorage jobStorage = null)
        {
            options      = options ?? new TagsOptions();
            redisOptions = redisOptions ?? new RedisStorageOptions();

            var storage = new RedisTagsServiceStorage(redisOptions);

            (jobStorage ?? JobStorage.Current).Register(options, storage);

            var config = configuration.UseTags(options).UseFilter(new RedisStateFilter(storage));

            return(config);
        }
        /// <summary>
        /// Configures Hangfire to use Tags.
        /// </summary>
        /// <param name="configuration">Global configuration</param>
        /// <param name="options">Options for tags</param>
        /// <param name="sqlOptions">Options for sql storage</param>
        /// <returns></returns>
        public static IGlobalConfiguration UseTagsWithSQLite(this IGlobalConfiguration configuration, TagsOptions options = null, SQLiteStorageOptions sqlOptions = null)
        {
            options    = options ?? new TagsOptions();
            sqlOptions = sqlOptions ?? new SQLiteStorageOptions();

            options.Storage = new SQLiteTagsServiceStorage(sqlOptions);

            TagsServiceStorage.Current = options.Storage;

            var config = configuration.UseTags(options);

            return(config);
        }
        /// <summary>
        /// Configures Hangfire to use Tags.
        /// </summary>
        /// <param name="configuration">Global configuration</param>
        /// <param name="options">Options for tags</param>
        /// <param name="mongoOptions">Options for Mongo storage</param>
        /// <returns></returns>
        public static IGlobalConfiguration UseTagsWithMongo(this IGlobalConfiguration configuration, TagsOptions options = null, MongoStorageOptions mongoOptions = null)
        {
            options      = options ?? new TagsOptions();
            mongoOptions = mongoOptions ?? new MongoStorageOptions();

            options.Storage = new MongoTagsServiceStorage(mongoOptions);
            var config = configuration.UseTags(options);

            JobsSidebarMenu.Items.RemoveAll(x => x.Method.Module.Assembly == typeof(TagsOptions).Assembly);
            JobsSidebarMenu.Items.Add(page => new MenuItem("Tags", page.Url.To("/tags/search"))
            {
                Active = page.RequestPath.StartsWith("/tags/search"),
                Metric = new DashboardMetric("tags:count", razorPage =>
                {
                    return(new Metric(((MongoTagsServiceStorage)options.Storage).GetTagsCount()));
                })
            });

            return(config);
        }
Example #7
0
        /// <summary>
        /// Configures Hangfire to use Tags.
        /// </summary>
        /// <param name="configuration">Global configuration</param>
        /// <param name="multiplexer"></param>
        /// <param name="options">Options for tags</param>
        /// <param name="redisOptions">Options for mysql storage</param>
        /// <returns></returns>
        public static IGlobalConfiguration UseTagsWithRedis(this IGlobalConfiguration configuration, IConnectionMultiplexer multiplexer, TagsOptions options = null, RedisStorageOptions redisOptions = null)
        {
            options      = options ?? new TagsOptions();
            redisOptions = redisOptions ?? new RedisStorageOptions()
            {
                Db = multiplexer.GetDatabase().Database
            };

            GlobalStateHandlers.Handlers.Add(new SucceededStateHandler(redisOptions, multiplexer));
            GlobalStateHandlers.Handlers.Add(new DeletedStateHandler(redisOptions, multiplexer));
            GlobalStateHandlers.Handlers.Add(new FailedStateHandler(redisOptions, multiplexer));
            GlobalStateHandlers.Handlers.Add(new ScheduledStateHandler(redisOptions, multiplexer));
            GlobalStateHandlers.Handlers.Add(new EnqueuedStateHandler(redisOptions, multiplexer));
            GlobalStateHandlers.Handlers.Add(new ProcessingStateHandler(redisOptions, multiplexer));
            GlobalStateHandlers.Handlers.Add(new AwaitingStateHandler(redisOptions, multiplexer));

            GlobalJobFilters.Filters.Add(new AutomaticRetryFilter(redisOptions, multiplexer));

            options.Storage = new RedisTagsServiceStorage(multiplexer, redisOptions);
            return(configuration.UseTags(options));
        }
Example #8
0
        /// <summary>
        /// Configures Hangfire to use Tags.
        /// </summary>
        /// <param name="configuration">Global configuration</param>
        /// <param name="jobStorage">Job storage</param>
        /// <param name="options">Options for tags</param>
        /// <param name="sqlOptions">Options for sql storage</param>
        /// <returns></returns>
        public static IGlobalConfiguration UseTagsWithSql(
            this IGlobalConfiguration configuration,
            SqlServerStorage jobStorage,
            TagsOptions options = null,
            SqlServerStorageOptions sqlOptions = null)
        {
            if (jobStorage == null)
            {
                throw new ArgumentNullException(nameof(jobStorage));
            }

            options    = options ?? new TagsOptions();
            sqlOptions = sqlOptions ?? new SqlServerStorageOptions();

            options.Storage = new SqlTagsServiceStorage(sqlOptions, jobStorage);

            TagsServiceStorage.Current = options.Storage;

            var config = configuration.UseTags(options, jobStorage: jobStorage);

            return(config);
        }