Exemplo n.º 1
0
    public static IServiceCollection AddQueuing(
        this IServiceCollection services,
        Action <QueuingBuilder> queuingBuilder)
    {
        services.AddSingleton <QueueOptions>();

        services.AddHangfire((sp, configuration) =>
        {
            configuration
            .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
            .UseSimpleAssemblyNameTypeSerializer()
            .UseRecommendedSerializerSettings()
            .UseActivator(sp.GetService <MiruJobActivator>());

            var builder = new QueuingBuilder(sp, configuration, services);

            queuingBuilder.Invoke(builder);
        });

        services.AddTransient <MiruJobActivator>();

        services.AddTransient(sp => new BackgroundJobServer(
                                  new BackgroundJobServerOptions(),
                                  sp.GetService <JobStorage>()));

        services.AddConsolable <QueueRunConsolable>();

        services.AddQueueCleaner <NullQueueCleaner>();

        return(services.AddSingleton <Jobs>());
    }
Exemplo n.º 2
0
        public static void UseLiteDb(this QueuingBuilder builder)
        {
            var storage      = builder.ServiceProvider.GetService <Storage>();
            var env          = builder.ServiceProvider.GetService <IHostEnvironment>();
            var queueOptions = builder.ServiceProvider.GetRequiredService <QueueOptions>();

            queueOptions.ConnectionString = storage.MakePath("db", $"Queue_{env.EnvironmentName}.db");

            builder.Configuration.UseLiteDbStorage(queueOptions.ConnectionString);
        }
Exemplo n.º 3
0
    public static void UseLiteDb(this QueuingBuilder builder)
    {
        var storage      = builder.ServiceProvider.GetRequiredService <LocalDiskStorage>();
        var env          = builder.ServiceProvider.GetRequiredService <IHostEnvironment>();
        var queueOptions = builder.ServiceProvider.GetRequiredService <QueueOptions>();

        var dbPath = storage.StorageDir / "db" / $"Queue_{env.EnvironmentName}.db";

        dbPath.Dir().EnsureDirExist();

        queueOptions.ConnectionString = dbPath;

        builder.Configuration.UseLiteDbStorage(queueOptions.ConnectionString);
    }
        public static void UseSqlServer(this QueuingBuilder builder)
        {
            var databaseOptions = builder.ServiceProvider.GetRequiredService <DatabaseOptions>();

            builder.Configuration.UseSqlServerStorage(databaseOptions.ConnectionString);
        }