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