feat(master): Подкготовка расписания

This commit is contained in:
Mikhail Trubnikov
2023-10-24 12:14:22 +10:00
parent 7991121f07
commit 1d515e46c1
14 changed files with 2882 additions and 22 deletions

7
PARR.Master/IMaster.cs Normal file
View File

@@ -0,0 +1,7 @@
namespace PARR.Master
{
public interface IMaster
{
Task StartAsync();
}
}

45
PARR.Master/Master.cs Normal file
View File

@@ -0,0 +1,45 @@
using Microsoft.Extensions.Logging;
using PARR.Master.Settings;
namespace PARR.Master
{
internal class Master : IMaster
{
private readonly WorkerSettings settings;
private readonly ILogger<Master> logger;
public Master(
WorkerSettings settings,
ILogger<Master> logger
)
{
this.settings = settings;
this.logger = logger;
}
public async Task StartAsync()
{
logger.LogInformation("Запуск сервиса.");
var nextStart = DateTime.Now;
while (true)
{
if (nextStart.Hour == DateTime.Now.Hour && nextStart.Minute == DateTime.Now.Minute)
{
logger.LogInformation("Запуск по расписанию.");
//todo:
// await Tratata();
nextStart = DateTime.Now.Add(settings.RepeatEvery);
logger.LogInformation($"Следующая дата запуска: {nextStart}");
}
// Каждую минуту
await Task.Delay(60 * 1000);
}
}
}
}

View File

@@ -11,4 +11,8 @@
<ProjectReference Include="..\PARR.DAL\PARR.DAL.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Services\" />
</ItemGroup>
</Project>

View File

@@ -2,6 +2,7 @@
using Microsoft.Extensions.DependencyInjection;
using PARR.BLL;
using PARR.DAL;
using PARR.Master.Settings;
namespace PARR.Master
{
@@ -12,14 +13,16 @@ namespace PARR.Master
services.InstallBllServices(configuration);
services.InstallDalServices(configuration);
// settings
//SettingsFromDb configuration
//var settingsFromDb = new SettingsFromDb();
//configuration.GetSection(nameof(SettingsFromDb)).Bind(settingsFromDb);
//services.AddSingleton(settingsFromDb);
var settings = new WorkerSettings();
configuration.GetSection(nameof(WorkerSettings)).Bind(settings);
services.AddSingleton(settings);
var mqSettings = new MqSettings();
configuration.GetSection(nameof(MqSettings)).Bind(mqSettings);
services.AddSingleton(mqSettings);
//add other services
//services.AddTransient<IEsppApiService, EsppApiService>();
services.AddTransient<IMaster, Master>();
}
public static IConfigurationBuilder AddMasterConfigurations(this IConfigurationBuilder builder, IServiceCollection services)

View File

@@ -0,0 +1,12 @@
using PARR.BLL.Contracts.Interfaces;
namespace PARR.Master.Settings
{
internal class MqSettings : IMqSettings
{
public string HostName { get; set; } = string.Empty;
public string QueueName { get; set; } = string.Empty;
public string User { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,7 @@
namespace PARR.Master.Settings
{
internal class WorkerSettings
{
public TimeSpan RepeatEvery { get; set; }
}
}