整理代码
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user