Skip to content

Commit 8bbec9d

Browse files
Du Guankuiclaude
andcommitted
revert(host): 移除 Hangfire,开源 host 不配置后台作业引擎(保持 ABP 内置 EF)
Hangfire 是 host 层部署关注点,开源版完全不配置——由商业版 / 有开发能力的客户自行在 host 中引入。host / Directory.Packages.props 还原至无 Hangfire 状态(vs main 零 diff)。 本分支自此只含 #291 前端入口。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 46baf81 commit 8bbec9d

4 files changed

Lines changed: 0 additions & 61 deletions

File tree

Directory.Packages.props

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@
2929
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.Sqlite" Version="10.2.0" />
3030
<PackageVersion Include="Volo.Abp.BackgroundJobs" Version="10.2.0" />
3131
<PackageVersion Include="Volo.Abp.BackgroundJobs.EntityFrameworkCore" Version="10.2.0" />
32-
<PackageVersion Include="Volo.Abp.BackgroundJobs.Hangfire" Version="10.2.0" />
33-
<PackageVersion Include="Hangfire.AspNetCore" Version="1.8.21" />
34-
<PackageVersion Include="Hangfire.SqlServer" Version="1.8.21" />
3532
<PackageVersion Include="Volo.Abp.BlobStoring" Version="10.2.0" />
3633
<PackageVersion Include="Volo.Abp.BlobStoring.FileSystem" Version="10.2.0" />
3734
<PackageVersion Include="Volo.Abp.Auditing" Version="10.2.0" />

host/src/Dignite.Paperbase.Host.csproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,6 @@
7676
<PackageReference Include="Volo.Abp.Identity.EntityFrameworkCore" />
7777
<PackageReference Include="Volo.Abp.OpenIddict.EntityFrameworkCore" />
7878
<PackageReference Include="Volo.Abp.BackgroundJobs.EntityFrameworkCore" />
79-
<PackageReference Include="Volo.Abp.BackgroundJobs.Hangfire" />
80-
<PackageReference Include="Hangfire.SqlServer" />
8179
<PackageReference Include="Volo.Abp.BlobStoring.FileSystem" />
8280
<PackageReference Include="Volo.Abp.FeatureManagement.EntityFrameworkCore" />
8381
<PackageReference Include="Volo.Abp.PermissionManagement.EntityFrameworkCore" />

host/src/PaperbaseHostModule.cs

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,10 @@
4646
using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling;
4747
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
4848
using Volo.Abp.AspNetCore.Serilog;
49-
using Hangfire;
5049
using Volo.Abp.AuditLogging.EntityFrameworkCore;
5150
using Volo.Abp.Autofac;
5251
using Volo.Abp.BackgroundJobs.EntityFrameworkCore;
5352
using Volo.Abp.BlobStoring;
54-
using Volo.Abp.Hangfire;
5553
using Volo.Abp.BlobStoring.FileSystem;
5654
using Volo.Abp.Caching;
5755
using Volo.Abp.Emailing;
@@ -129,15 +127,7 @@ namespace Dignite.Paperbase.Host;
129127
typeof(AbpFeatureManagementEntityFrameworkCoreModule),
130128
typeof(AbpPermissionManagementEntityFrameworkCoreModule),
131129
typeof(AbpSettingManagementEntityFrameworkCoreModule),
132-
// 默认:ABP 内置 EF 后台作业管理器(单线程串行)——本地 / 开源部署**零额外基础设施**即可运行,无需 Hangfire。
133130
typeof(AbpBackgroundJobsEntityFrameworkCoreModule),
134-
// 可选(#292,商业 / 稳定部署):改用 Hangfire 拿并发 worker + 持久化续跑。切换两步:
135-
// 1) 注释上面 EF 行、取消注释下面 Hangfire 行(HangfireBackgroundJobManager 带
136-
// [Dependency(ReplaceServices = true)] 接管 IBackgroundJobManager;ABP IsJobExecutionEnabled 只能停 server、
137-
// 停不了 manager,故 Hangfire 是 module 级即编译/部署期决策、不可纯运行时回退到 EF);
138-
// 2) appsettings 设 "Hangfire:Enabled": true(驱动 ConfigureHangfire 配 SqlServer 存储 + WorkerCount)。
139-
// Hangfire 首启 PrepareSchemaIfNecessary 自建存储表;按 LLM provider 并发额度设 WorkerCount + 同步上调 DB 连接池。
140-
// typeof(Volo.Abp.BackgroundJobs.Hangfire.AbpBackgroundJobsHangfireModule),
141131
typeof(AbpBlobStoringFileSystemModule),
142132
typeof(AbpEntityFrameworkCoreSqlServerModule),
143133

@@ -280,48 +270,6 @@ public override void ConfigureServices(ServiceConfigurationContext context)
280270
ConfigureAI(context, configuration);
281271
ConfigureOpenTelemetry(context, configuration);
282272
ConfigureRequestLimits(context);
283-
ConfigureHangfire(context, configuration);
284-
}
285-
286-
/// <summary>
287-
/// #292:Hangfire 后台作业执行的 opt-in 配置——并发 worker + SqlServer 持久化续跑,让 #289 的批量重处理
288-
/// (链式分发 + 单篇幂等底座)真正并发跑。<b>默认关闭</b>:本地 / 开源部署用 ABP 内置 EF 管理器即可,零额外基础设施。
289-
/// <para>
290-
/// 启用须**两步**(见 <c>[DependsOn]</c> 注释):① 取消注释 <c>AbpBackgroundJobsHangfireModule</c>;
291-
/// ② 设 <c>Hangfire:Enabled = true</c>。此方法仅在 ② 满足时配置 SqlServer 存储 + worker 数;① 不做则 manager
292-
/// 仍是 EF(本方法配的存储闲置无害)。<c>Hangfire:Enabled = false</c> 时整方法早退,Hangfire 完全不参与。
293-
/// </para>
294-
/// <para>
295-
/// <b>并发上限是关键约束</b>:所有后台作业(文本提取 / 分类 / 字段抽取)都走外部 LLM provider。Hangfire 默认
296-
/// WorkerCount = ProcessorCount × 5 会瞬间打爆 provider 限速 / 配额。故 worker 数由 <c>Hangfire:WorkerCount</c>
297-
/// 配置(默认保守值 5),生产按 provider 并发额度 + DB 连接池容量调。外部 LLM 调用绝不在长 UoW 内
298-
/// (core 的 <c>FieldExtractionService</c> / pipeline 作业已是三段式短 UoW——切 Hangfire 后该纪律仍成立)。
299-
/// </para>
300-
/// </summary>
301-
private void ConfigureHangfire(ServiceConfigurationContext context, IConfiguration configuration)
302-
{
303-
// 默认关闭——不引入 Hangfire 也能跑(ABP 内置 EF 后台作业管理器接管)。
304-
if (!configuration.GetValue<bool>("Hangfire:Enabled"))
305-
{
306-
return;
307-
}
308-
309-
context.Services.AddHangfire(config =>
310-
{
311-
config.UseSqlServerStorage(configuration.GetConnectionString("Default"));
312-
});
313-
314-
// 并发参数走 AbpHangfireOptions.ServerOptions —— ABP 的 AbpHangfireModule 在 OnApplicationInitialization
315-
// 启动**唯一**一个 BackgroundJobServer,其 WorkerCount 只从此处读。**绝不**额外调 AddHangfireServer:
316-
// 那会多起一个 server(两个 worker pool 轮询同一存储),且 ABP 的 server 仍按 ProcessorCount×5 默认跑,
317-
// 令此处的保守上限形同虚设(review round 1 blocker)。
318-
// 整体替换 ServerOptions:当前只需 WorkerCount,队列走 Hangfire 默认 "default"(与 ABP 入队队列匹配)。
319-
// 未来若多实例共享同一 Hangfire 存储需隔离,在此 BackgroundJobServerOptions 上一并设 Queues / 配 DefaultQueuePrefix。
320-
var workerCount = configuration.GetValue<int?>("Hangfire:WorkerCount") ?? 5;
321-
Configure<AbpHangfireOptions>(options =>
322-
{
323-
options.ServerOptions = new BackgroundJobServerOptions { WorkerCount = workerCount };
324-
});
325273
}
326274

327275
// #221:上传请求体上限作为 Kestrel / Form 层 backstop。真正的 fail-closed 友好错误在

host/src/appsettings.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,6 @@
4444
"ConnectionStrings": {
4545
"Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=Paperbase;Trusted_Connection=True;TrustServerCertificate=true"
4646
},
47-
"Hangfire": {
48-
"Enabled": false,
49-
"WorkerCount": 5
50-
},
5147
"PaperbaseAI": {
5248
"Endpoint": "https://api.openai.com/v1",
5349
"ApiKey": "YOUR_API_KEY",

0 commit comments

Comments
 (0)