using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace Store.Modules.CloudProduct.Services { /// /// Hangfire 定时任务:把数据库中未同步(IndexStatus=0)的商品写入 OpenSearch 分词索引。 /// public class GoodsIndexJob { private readonly IServiceScopeFactory _scopeFactory; private readonly IConfiguration _configuration; private readonly ILogger _logger; public GoodsIndexJob(IServiceScopeFactory scopeFactory, IConfiguration configuration,ILogger logger) { _scopeFactory = scopeFactory; _configuration = configuration; _logger = logger; } public async Task ProcessPendingAsync() { var batchSize = _configuration.GetValue("Indexing:BatchSize") ?? 1000; using var scope = _scopeFactory.CreateScope(); var service = scope.ServiceProvider.GetRequiredService(); var count = await service.IndexPendingGoodsAsync(batchSize); _logger.LogInformation($"[Hangfire] 商品分词定时任务完成,本次同步 {count} 条"); } } }