整理代码

This commit is contained in:
2024-01-16 18:00:23 +08:00
parent 78cd833617
commit a74cf5ddb7
7 changed files with 344 additions and 136 deletions

View File

@@ -17,6 +17,7 @@ public class OutputService : IOutputService
{
private readonly ILogger _logger;
private readonly DataRecordQueue _consumerQueue;
private readonly IOptions<DataTransformOptions> _transOptions;
private readonly IOptions<DatabaseOutputOptions> _options;
private readonly ProcessContext _context;
private readonly TaskManager _taskManager;
@@ -24,11 +25,13 @@ public class OutputService : IOutputService
public OutputService(ILogger<OutputService> logger,
[FromKeyedServices(ProcessStep.Consumer)] DataRecordQueue consumerQueue,
IOptions<DatabaseOutputOptions> options,
IOptions<DataTransformOptions> transOptions,
ProcessContext context,
TaskManager taskManager)
{
_logger = logger;
_consumerQueue = consumerQueue;
_transOptions = transOptions;
_options = options;
_context = context;
_taskManager = taskManager;
@@ -99,7 +102,7 @@ public class OutputService : IOutputService
await output.WriteRecordAsync(record);
count++;
}
await output.FlushAsync(_options.Value.MaxAllowedPacket);
await output.FlushAsync(_options.Value.MaxAllowedPacket, _transOptions);
_context.AddOutput(count);
}
}

View File

@@ -5,6 +5,7 @@ using ConsoleApp2.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using StackExchange.Redis;
namespace ConsoleApp2.HostedServices;
@@ -18,19 +19,21 @@ public class TransformService : ITransformService
private readonly DataRecordQueue _producerQueue;
private readonly DataRecordQueue _consumerQueue;
private readonly ProcessContext _context;
private readonly ConnectionMultiplexer _redisConnection;
public TransformService(ILogger<TransformService> logger,
IOptions<DataTransformOptions> options,
[FromKeyedServices(ProcessStep.Producer)]DataRecordQueue producerQueue,
[FromKeyedServices(ProcessStep.Consumer)]DataRecordQueue consumerQueue,
ProcessContext context)
ProcessContext context, ConnectionMultiplexer redisConnection)
{
_logger = logger;
_options = options;
_producerQueue = producerQueue;
_consumerQueue = consumerQueue;
_context = context;
_redisConnection= redisConnection;
}
public async Task ExecuteAsync(CancellationToken cancellationToken)
@@ -75,12 +78,14 @@ public class TransformService : ITransformService
record[i] = field;
}
//过滤不要的record
if (_options.Value.RecordFilter?.Invoke(record) == false) continue;
if ( await _options.Value.RecordFilter?.Invoke(record,_redisConnection.GetDatabase()) == false) continue;
record.Database = _options.Value.DatabaseFilter?.Invoke(record);
//修改record
_options.Value.RecordModify?.Invoke(record);
//缓存record
_options.Value.RecordCache?.Invoke(record, _redisConnection.GetDatabase());
//替换record
var replaceRecord = _options.Value.RecordReplace?.Invoke(record);
var replaceRecord =await _options.Value.RecordReplace?.Invoke(record, _redisConnection.GetDatabase());
if (replaceRecord != null)
{
record = replaceRecord;