讓 Hangfire 使用 MongoDB 存儲
本文轉(zhuǎn)載自微信公眾號「后端Q 」,作者conan 。轉(zhuǎn)載本文請聯(lián)系后端Q 公眾號。
MongoDB 支持Hangfire庫。通過使用這個庫,您可以將所有作業(yè)信息存儲在 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
這是默認的遷移策略。如果架構(gòu)版本不匹配,它將拋出InvalidOperationException,永遠不會讓您啟動并運行。因此,它迫使您決定什么遷移策略最適合您,同時確保數(shù)據(jù)的安全。
Drop
這只需刪除現(xiàn)有的Hangfire.Mongo數(shù)據(jù)庫并更新模式版本。沒有絨毛,準備從頭開始。這是一個完美的策略,如果你在創(chuàng)業(yè)時把所有的工作都安排好。
Migrate
這將把數(shù)據(jù)庫從一個模式版本遷移到下一個模式版本,直到達到所需的模式版本。并不是所有的數(shù)據(jù)都可以遷移,這就是為什么會發(fā)生一些數(shù)據(jù)丟失的原因。在投入生產(chǎn)前,請謹慎使用并仔細測試。我們不對數(shù)據(jù)丟失負責。
注意:只支持前向遷移。如果需要還原到以前的架構(gòu)版本,則需要手動刪除或還原以前的數(shù)據(jù)庫。
https://github.com/sergeyzwezdin/Hangfire.Mongo