讓 Hangfire 使用 MongoDB 存儲

MongoDB 支持 Hangfire 庫。通過使用這個庫,您可以將所有作業信息存儲在 MongoDB 中。

要安裝 Hangfire MongoDB Storage,請在 Nuget 包管理器控制檯中運行以下命令:

PM> Install-Package Hangfire.Mongo
public void ConfigureServices(IServiceCollection services)
{
    var mongoUrlBuilder = new MongoUrlBuilder("mongodb://localhost/jobs");
    var mongoClient = new MongoClient(mongoUrlBuilder.ToMongoUrl());

    // Add Hangfire services. Hangfire.AspNetCore nuget required
    services.AddHangfire(configuration => configuration
        .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
        .UseSimpleAssemblyNameTypeSerializer()
        .UseRecommendedSerializerSettings()
        .UseMongoStorage(mongoClient, mongoUrlBuilder.DatabaseName, new MongoStorageOptions
        {
            MigrationOptions = new MongoMigrationOptions
            {
                MigrationStrategy = new MigrateMongoMigrationStrategy(),
                BackupStrategy = new CollectionMongoBackupStrategy()
            },
            Prefix = "hangfire.mongo",
            CheckConnection = true
        })
    );
    // Add the processing server as IHostedService
    services.AddHangfireServer(serverOptions =>
    {
        serverOptions.ServerName = "Hangfire.Mongo server 1";
    });

    // Add framework services.
}
var options = new MongoStorageOptions
{
    MigrationOptions = new MongoMigrationOptions
    {
        MigrationStrategy = new DropMongoMigrationStrategy(),
        BackupStrategy = new NoneMongoBackupStrategy()
    }
};
GlobalConfiguration.Configuration.UseMongoStorage("mongodb://localhost/jobs", options);
app.UseHangfireServer();
app.UseHangfireDashboard();

Throw

這是默認的遷移策略。如果架構版本不匹配,它將拋出 InvalidOperationException,永遠不會讓您啓動並運行。因此,它迫使您決定什麼遷移策略最適合您,同時確保數據的安全。

Drop

這隻需刪除現有的 Hangfire.Mongo 數據庫並更新模式版本。沒有絨毛,準備從頭開始。這是一個完美的策略,如果你在創業時把所有的工作都安排好。

Migrate

這將把數據庫從一個模式版本遷移到下一個模式版本,直到達到所需的模式版本。並不是所有的數據都可以遷移,這就是爲什麼會發生一些數據丟失的原因。在投入生產前,請謹慎使用並仔細測試。我們不對數據丟失負責。

注意:只支持前向遷移。如果需要還原到以前的架構版本,則需要手動刪除或還原以前的數據庫。

https://github.com/sergeyzwezdin/Hangfire.Mongo

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/ztgYP7BsQn2luEbih0fEEg