Remove unused project
This commit is contained in:
parent
52e621f829
commit
e1b21abe94
@ -1,13 +0,0 @@
|
|||||||
namespace Ordering.BackgroundTasks.Configuration
|
|
||||||
{
|
|
||||||
public class BackgroundTaskSettings
|
|
||||||
{
|
|
||||||
public string ConnectionString { get; set; }
|
|
||||||
|
|
||||||
public string EventBusConnection { get; set; }
|
|
||||||
|
|
||||||
public int GracePeriodTime { get; set; }
|
|
||||||
|
|
||||||
public int CheckUpdateTime { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
|
|
||||||
WORKDIR /app
|
|
||||||
EXPOSE 80
|
|
||||||
|
|
||||||
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
|
|
||||||
WORKDIR /src
|
|
||||||
|
|
||||||
COPY scripts scripts/
|
|
||||||
|
|
||||||
COPY src/ApiGateways/*/*.csproj /src/csproj-files/
|
|
||||||
COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/
|
|
||||||
COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/
|
|
||||||
COPY src/Services/*/*/*.csproj /src/csproj-files/
|
|
||||||
COPY src/Web/*/*.csproj /src/csproj-files/
|
|
||||||
|
|
||||||
COPY . .
|
|
||||||
WORKDIR /src/src/Services/Ordering/Ordering.BackgroundTasks
|
|
||||||
RUN dotnet publish -c Release -o /app
|
|
||||||
|
|
||||||
FROM build AS publish
|
|
||||||
|
|
||||||
FROM base AS final
|
|
||||||
WORKDIR /app
|
|
||||||
COPY --from=publish /app .
|
|
||||||
ENTRYPOINT ["dotnet", "Ordering.BackgroundTasks.dll"]
|
|
@ -1,18 +0,0 @@
|
|||||||
FROM microsoft/dotnet:2.2-sdk
|
|
||||||
ARG BUILD_CONFIGURATION=Debug
|
|
||||||
ENV ASPNETCORE_ENVIRONMENT=Development
|
|
||||||
ENV DOTNET_USE_POLLING_FILE_WATCHER=true
|
|
||||||
EXPOSE 80
|
|
||||||
|
|
||||||
WORKDIR /src
|
|
||||||
COPY ["src/BuildingBlocks/EventBus/EventBus/EventBus.csproj", "src/BuildingBlocks/EventBus/EventBus/"]
|
|
||||||
COPY ["src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj", "src/BuildingBlocks/EventBus/EventBusRabbitMQ/"]
|
|
||||||
COPY ["src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj", "src/BuildingBlocks/EventBus/EventBusServiceBus/"]
|
|
||||||
COPY ["src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj", "src/Services/Ordering/Ordering.BackgroundTasks/"]
|
|
||||||
|
|
||||||
RUN dotnet restore src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj
|
|
||||||
COPY . .
|
|
||||||
WORKDIR /src/src/Services/Ordering/Ordering.BackgroundTasks
|
|
||||||
RUN dotnet build --no-restore -c $BUILD_CONFIGURATION
|
|
||||||
|
|
||||||
ENTRYPOINT ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"]
|
|
@ -1,12 +0,0 @@
|
|||||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events;
|
|
||||||
|
|
||||||
namespace Ordering.BackgroundTasks.IntegrationEvents
|
|
||||||
{
|
|
||||||
public class GracePeriodConfirmedIntegrationEvent : IntegrationEvent
|
|
||||||
{
|
|
||||||
public int OrderId { get; }
|
|
||||||
|
|
||||||
public GracePeriodConfirmedIntegrationEvent(int orderId) =>
|
|
||||||
OrderId = orderId;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,42 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>$(NetCoreTargetVersion)</TargetFramework>
|
|
||||||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
|
|
||||||
<DockerComposeProjectPath>..\..\..\..\docker-compose.dcproj</DockerComposeProjectPath>
|
|
||||||
<GenerateErrorForMissingTargetingPacks>false</GenerateErrorForMissingTargetingPacks>
|
|
||||||
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
|
|
||||||
<LangVersion>$(LangVersion)</LangVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Remove="wwwroot\**" />
|
|
||||||
<Content Remove="wwwroot\**" />
|
|
||||||
<EmbeddedResource Remove="wwwroot\**" />
|
|
||||||
<None Remove="wwwroot\**" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="$(AspNetCore_HealthChecks_UI_Client)" />
|
|
||||||
<PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="$(AspNetCore_HealthChecks_AzureServiceBus)" />
|
|
||||||
<PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="$(AspNetCore_HealthChecks_Rabbitmq)" />
|
|
||||||
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="$(Autofac_Extensions_DependencyInjection)" />
|
|
||||||
<PackageReference Include="Dapper" Version="$(Dapper)" />
|
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="$(Microsoft_AspNetCore_Diagnostics_HealthChecks)" />
|
|
||||||
<PackageReference Include="Microsoft.AspNetCore.HealthChecks" Version="$(Microsoft_AspNetCore_HealthChecks)" />
|
|
||||||
<PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="$(AspNetCore_HealthChecks_SqlServer)" />
|
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="$(Serilog_AspNetCore)" />
|
|
||||||
<PackageReference Include="Serilog.Enrichers.Environment" Version="$(Serilog_Enrichers_Environment)" />
|
|
||||||
<PackageReference Include="Serilog.Settings.Configuration" Version="$(Serilog_Settings_Configuration)" />
|
|
||||||
<PackageReference Include="Serilog.Sinks.Console" Version="$(Serilog_Sinks_Console)" />
|
|
||||||
<PackageReference Include="Serilog.Sinks.Seq" Version="$(Serilog_Sinks_Seq)" />
|
|
||||||
<PackageReference Include="Serilog.Sinks.Http" Version="$(Serilog_Sinks_Http)" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\..\BuildingBlocks\EventBus\EventBusRabbitMQ\EventBusRabbitMQ.csproj" />
|
|
||||||
<ProjectReference Include="..\..\..\BuildingBlocks\EventBus\EventBusServiceBus\EventBusServiceBus.csproj" />
|
|
||||||
<ProjectReference Include="..\..\..\BuildingBlocks\EventBus\EventBus\EventBus.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
@ -1,76 +0,0 @@
|
|||||||
using Microsoft.AspNetCore;
|
|
||||||
using Microsoft.AspNetCore.Hosting;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using Serilog;
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace Ordering.BackgroundTasks
|
|
||||||
{
|
|
||||||
public class Program
|
|
||||||
{
|
|
||||||
public static readonly string Namespace = typeof(Program).Namespace;
|
|
||||||
public static readonly string AppName = Namespace;
|
|
||||||
|
|
||||||
public static int Main(string[] args)
|
|
||||||
{
|
|
||||||
var configuration = GetConfiguration();
|
|
||||||
|
|
||||||
Log.Logger = CreateSerilogLogger(configuration);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Log.Information("Configuring web host ({ApplicationContext})...", AppName);
|
|
||||||
var host = BuildWebHost(configuration, args);
|
|
||||||
|
|
||||||
Log.Information("Starting web host ({ApplicationContext})...", AppName);
|
|
||||||
host.Run();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.Fatal(ex, "Program terminated unexpectedly ({ApplicationContext})!", AppName);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
Log.CloseAndFlush();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IWebHost BuildWebHost(IConfiguration configuration, string[] args) =>
|
|
||||||
WebHost.CreateDefaultBuilder(args)
|
|
||||||
.CaptureStartupErrors(false)
|
|
||||||
.UseStartup<Startup>()
|
|
||||||
.UseConfiguration(configuration)
|
|
||||||
.UseSerilog()
|
|
||||||
.Build();
|
|
||||||
|
|
||||||
private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration)
|
|
||||||
{
|
|
||||||
var seqServerUrl = configuration["Serilog:SeqServerUrl"];
|
|
||||||
var logstashUrl = configuration["Serilog:LogstashgUrl"];
|
|
||||||
return new LoggerConfiguration()
|
|
||||||
.MinimumLevel.Verbose()
|
|
||||||
.Enrich.WithProperty("ApplicationContext", AppName)
|
|
||||||
.Enrich.FromLogContext()
|
|
||||||
.WriteTo.Console()
|
|
||||||
.WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl)
|
|
||||||
.WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl)
|
|
||||||
.ReadFrom.Configuration(configuration)
|
|
||||||
.CreateLogger();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IConfiguration GetConfiguration()
|
|
||||||
{
|
|
||||||
var builder = new ConfigurationBuilder()
|
|
||||||
.SetBasePath(Directory.GetCurrentDirectory())
|
|
||||||
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
|
|
||||||
.AddEnvironmentVariables();
|
|
||||||
|
|
||||||
return builder.Build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"iisSettings": {
|
|
||||||
"windowsAuthentication": false,
|
|
||||||
"anonymousAuthentication": true,
|
|
||||||
"iisExpress": {
|
|
||||||
"applicationUrl": "http://localhost:5161/",
|
|
||||||
"sslPort": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"profiles": {
|
|
||||||
"IIS Express": {
|
|
||||||
"commandName": "IISExpress",
|
|
||||||
"launchBrowser": true,
|
|
||||||
"launchUrl": "api/values",
|
|
||||||
"environmentVariables": {
|
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ordering.BackgroundTasks": {
|
|
||||||
"commandName": "Project",
|
|
||||||
"launchBrowser": true,
|
|
||||||
"launchUrl": "api/values",
|
|
||||||
"environmentVariables": {
|
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
|
||||||
},
|
|
||||||
"applicationUrl": "http://localhost:5162/"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,199 +0,0 @@
|
|||||||
using Autofac;
|
|
||||||
using Autofac.Extensions.DependencyInjection;
|
|
||||||
using HealthChecks.UI.Client;
|
|
||||||
using Microsoft.AspNetCore.Builder;
|
|
||||||
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
|
|
||||||
using Microsoft.Azure.ServiceBus;
|
|
||||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus;
|
|
||||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions;
|
|
||||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ;
|
|
||||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
|
||||||
using Microsoft.Extensions.Hosting;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using Ordering.BackgroundTasks.Configuration;
|
|
||||||
using Ordering.BackgroundTasks.Tasks;
|
|
||||||
using RabbitMQ.Client;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Ordering.BackgroundTasks
|
|
||||||
{
|
|
||||||
public class Startup
|
|
||||||
{
|
|
||||||
public Startup(IConfiguration configuration)
|
|
||||||
{
|
|
||||||
Configuration = configuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IConfiguration Configuration { get; }
|
|
||||||
|
|
||||||
// This method gets called by the runtime. Use this method to add services to the container.
|
|
||||||
public IServiceProvider ConfigureServices(IServiceCollection services)
|
|
||||||
{
|
|
||||||
//add health check for this service
|
|
||||||
services.AddCustomHealthCheck(Configuration);
|
|
||||||
|
|
||||||
//configure settings
|
|
||||||
|
|
||||||
services.Configure<BackgroundTaskSettings>(Configuration);
|
|
||||||
services.AddOptions();
|
|
||||||
|
|
||||||
//configure background task
|
|
||||||
|
|
||||||
services.AddSingleton<IHostedService, GracePeriodManagerService>();
|
|
||||||
|
|
||||||
//configure event bus related services
|
|
||||||
|
|
||||||
if (Configuration.GetValue<bool>("AzureServiceBusEnabled"))
|
|
||||||
{
|
|
||||||
services.AddSingleton<IServiceBusPersisterConnection>(sp =>
|
|
||||||
{
|
|
||||||
var logger = sp.GetRequiredService<ILogger<DefaultServiceBusPersisterConnection>>();
|
|
||||||
|
|
||||||
var serviceBusConnectionString = Configuration["EventBusConnection"];
|
|
||||||
var serviceBusConnection = new ServiceBusConnectionStringBuilder(serviceBusConnectionString);
|
|
||||||
|
|
||||||
return new DefaultServiceBusPersisterConnection(serviceBusConnection, logger);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
services.AddSingleton<IRabbitMQPersistentConnection>(sp =>
|
|
||||||
{
|
|
||||||
var logger = sp.GetRequiredService<ILogger<DefaultRabbitMQPersistentConnection>>();
|
|
||||||
|
|
||||||
|
|
||||||
var factory = new ConnectionFactory()
|
|
||||||
{
|
|
||||||
HostName = Configuration["EventBusConnection"],
|
|
||||||
DispatchConsumersAsync = true
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(Configuration["EventBusUserName"]))
|
|
||||||
{
|
|
||||||
factory.UserName = Configuration["EventBusUserName"];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(Configuration["EventBusPassword"]))
|
|
||||||
{
|
|
||||||
factory.Password = Configuration["EventBusPassword"];
|
|
||||||
}
|
|
||||||
|
|
||||||
var retryCount = 5;
|
|
||||||
if (!string.IsNullOrEmpty(Configuration["EventBusRetryCount"]))
|
|
||||||
{
|
|
||||||
retryCount = int.Parse(Configuration["EventBusRetryCount"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new DefaultRabbitMQPersistentConnection(factory, logger, retryCount);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
RegisterEventBus(services);
|
|
||||||
|
|
||||||
//create autofac based service provider
|
|
||||||
var container = new ContainerBuilder();
|
|
||||||
container.Populate(services);
|
|
||||||
|
|
||||||
|
|
||||||
return new AutofacServiceProvider(container.Build());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
|
||||||
public void Configure(IApplicationBuilder app)
|
|
||||||
{
|
|
||||||
app.UseRouting();
|
|
||||||
app.UseEndpoints(endpoints =>
|
|
||||||
{
|
|
||||||
endpoints.MapHealthChecks("/hc", new HealthCheckOptions()
|
|
||||||
{
|
|
||||||
Predicate = _ => true,
|
|
||||||
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
|
|
||||||
});
|
|
||||||
endpoints.MapHealthChecks("/liveness", new HealthCheckOptions
|
|
||||||
{
|
|
||||||
Predicate = r => r.Name.Contains("self")
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void RegisterEventBus(IServiceCollection services)
|
|
||||||
{
|
|
||||||
var subscriptionClientName = Configuration["SubscriptionClientName"];
|
|
||||||
|
|
||||||
if (Configuration.GetValue<bool>("AzureServiceBusEnabled"))
|
|
||||||
{
|
|
||||||
services.AddSingleton<IEventBus, EventBusServiceBus>(sp =>
|
|
||||||
{
|
|
||||||
var serviceBusPersisterConnection = sp.GetRequiredService<IServiceBusPersisterConnection>();
|
|
||||||
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
|
|
||||||
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
|
|
||||||
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
|
|
||||||
|
|
||||||
return new EventBusServiceBus(serviceBusPersisterConnection, logger,
|
|
||||||
eventBusSubcriptionsManager, subscriptionClientName, iLifetimeScope);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
services.AddSingleton<IEventBus, EventBusRabbitMQ>(sp =>
|
|
||||||
{
|
|
||||||
var rabbitMQPersistentConnection = sp.GetRequiredService<IRabbitMQPersistentConnection>();
|
|
||||||
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
|
|
||||||
var logger = sp.GetRequiredService<ILogger<EventBusRabbitMQ>>();
|
|
||||||
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
|
|
||||||
|
|
||||||
var retryCount = 5;
|
|
||||||
if (!string.IsNullOrEmpty(Configuration["EventBusRetryCount"]))
|
|
||||||
{
|
|
||||||
retryCount = int.Parse(Configuration["EventBusRetryCount"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class CustomExtensionMethods
|
|
||||||
{
|
|
||||||
public static IServiceCollection AddCustomHealthCheck(this IServiceCollection services, IConfiguration configuration)
|
|
||||||
{
|
|
||||||
var hcBuilder = services.AddHealthChecks();
|
|
||||||
|
|
||||||
hcBuilder.AddCheck("self", () => HealthCheckResult.Healthy());
|
|
||||||
|
|
||||||
hcBuilder
|
|
||||||
.AddSqlServer(
|
|
||||||
configuration["ConnectionString"],
|
|
||||||
name: "OrderingTaskDB-check",
|
|
||||||
tags: new string[] { "orderingtaskdb" });
|
|
||||||
|
|
||||||
if (configuration.GetValue<bool>("AzureServiceBusEnabled"))
|
|
||||||
{
|
|
||||||
hcBuilder
|
|
||||||
.AddAzureServiceBusTopic(
|
|
||||||
configuration["EventBusConnection"],
|
|
||||||
topicName: "eshop_event_bus",
|
|
||||||
name: "orderingtask-servicebus-check",
|
|
||||||
tags: new string[] { "servicebus" });
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
hcBuilder
|
|
||||||
.AddRabbitMQ(
|
|
||||||
$"amqp://{configuration["EventBusConnection"]}",
|
|
||||||
name: "orderingtask-rabbitmqbus-check",
|
|
||||||
tags: new string[] { "rabbitmqbus" });
|
|
||||||
}
|
|
||||||
|
|
||||||
return services;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,95 +0,0 @@
|
|||||||
using Dapper;
|
|
||||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions;
|
|
||||||
using Microsoft.Extensions.Hosting;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using Ordering.BackgroundTasks.Configuration;
|
|
||||||
using Ordering.BackgroundTasks.IntegrationEvents;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data.SqlClient;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Ordering.BackgroundTasks.Tasks
|
|
||||||
{
|
|
||||||
public class GracePeriodManagerService
|
|
||||||
: BackgroundService
|
|
||||||
{
|
|
||||||
private readonly ILogger<GracePeriodManagerService> _logger;
|
|
||||||
private readonly BackgroundTaskSettings _settings;
|
|
||||||
private readonly IEventBus _eventBus;
|
|
||||||
|
|
||||||
public GracePeriodManagerService(
|
|
||||||
IOptions<BackgroundTaskSettings> settings,
|
|
||||||
IEventBus eventBus,
|
|
||||||
ILogger<GracePeriodManagerService> logger)
|
|
||||||
{
|
|
||||||
_settings = settings?.Value ?? throw new ArgumentNullException(nameof(settings));
|
|
||||||
_eventBus = eventBus ?? throw new ArgumentNullException(nameof(eventBus));
|
|
||||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
||||||
{
|
|
||||||
_logger.LogDebug("GracePeriodManagerService is starting.");
|
|
||||||
|
|
||||||
stoppingToken.Register(() => _logger.LogDebug("#1 GracePeriodManagerService background task is stopping."));
|
|
||||||
|
|
||||||
while (!stoppingToken.IsCancellationRequested)
|
|
||||||
{
|
|
||||||
_logger.LogDebug("GracePeriodManagerService background task is doing background work.");
|
|
||||||
|
|
||||||
CheckConfirmedGracePeriodOrders();
|
|
||||||
|
|
||||||
await Task.Delay(_settings.CheckUpdateTime, stoppingToken);
|
|
||||||
}
|
|
||||||
|
|
||||||
_logger.LogDebug("GracePeriodManagerService background task is stopping.");
|
|
||||||
|
|
||||||
await Task.CompletedTask;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CheckConfirmedGracePeriodOrders()
|
|
||||||
{
|
|
||||||
_logger.LogDebug("Checking confirmed grace period orders");
|
|
||||||
|
|
||||||
var orderIds = GetConfirmedGracePeriodOrders();
|
|
||||||
|
|
||||||
foreach (var orderId in orderIds)
|
|
||||||
{
|
|
||||||
var confirmGracePeriodEvent = new GracePeriodConfirmedIntegrationEvent(orderId);
|
|
||||||
|
|
||||||
_logger.LogInformation("----- Publishing integration event: {IntegrationEventId} from {AppName} - ({@IntegrationEvent})", confirmGracePeriodEvent.Id, Program.AppName, confirmGracePeriodEvent);
|
|
||||||
|
|
||||||
_eventBus.Publish(confirmGracePeriodEvent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerable<int> GetConfirmedGracePeriodOrders()
|
|
||||||
{
|
|
||||||
IEnumerable<int> orderIds = new List<int>();
|
|
||||||
|
|
||||||
using (var conn = new SqlConnection(_settings.ConnectionString))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
conn.Open();
|
|
||||||
orderIds = conn.Query<int>(
|
|
||||||
@"SELECT Id FROM [ordering].[orders]
|
|
||||||
WHERE DATEDIFF(minute, [OrderDate], GETDATE()) >= @GracePeriodTime
|
|
||||||
AND [OrderStatusId] = 1",
|
|
||||||
new { GracePeriodTime = _settings.GracePeriodTime });
|
|
||||||
}
|
|
||||||
catch (SqlException exception)
|
|
||||||
{
|
|
||||||
_logger.LogCritical(exception, "FATAL ERROR: Database connections could not be opened: {Message}", exception.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return orderIds;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"Logging": {
|
|
||||||
"IncludeScopes": false,
|
|
||||||
"LogLevel": {
|
|
||||||
"Default": "Debug",
|
|
||||||
"System": "Information",
|
|
||||||
"Microsoft": "Information"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"ConnectionString": "Server=tcp:127.0.0.1,5433;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word;",
|
|
||||||
"Serilog": {
|
|
||||||
"SeqServerUrl": null,
|
|
||||||
"LogstashgUrl": null,
|
|
||||||
"MinimumLevel": {
|
|
||||||
"Default": "Information",
|
|
||||||
"Override": {
|
|
||||||
"Microsoft": "Warning",
|
|
||||||
"Microsoft.eShopOnContainers": "Information",
|
|
||||||
"System": "Warning"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SubscriptionClientName": "BackgroundTasks",
|
|
||||||
"GracePeriodTime": "1",
|
|
||||||
"CheckUpdateTime": "1000",
|
|
||||||
"ApplicationInsights": {
|
|
||||||
"InstrumentationKey": ""
|
|
||||||
},
|
|
||||||
"AzureServiceBusEnabled": false,
|
|
||||||
"EventBusRetryCount": 5,
|
|
||||||
"EventBusConnection": "",
|
|
||||||
"EventBusUserName": "",
|
|
||||||
"EventBusPassword": ""
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
kind: helm-release
|
|
||||||
apiVersion: 1.1
|
|
||||||
build:
|
|
||||||
context: ..\..\..\..
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
install:
|
|
||||||
chart: ../../../../k8s/helm/ordering-backgroundtasks
|
|
||||||
set:
|
|
||||||
replicaCount: 1
|
|
||||||
image:
|
|
||||||
tag: $(tag)
|
|
||||||
pullPolicy: Never
|
|
||||||
ingress:
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/ingress.class: traefik-azds
|
|
||||||
hosts:
|
|
||||||
- $(spacePrefix)eshop$(hostSuffix)
|
|
||||||
inf:
|
|
||||||
k8s:
|
|
||||||
dns: $(spacePrefix)eshop$(hostSuffix)
|
|
||||||
values:
|
|
||||||
- values.dev.yaml?
|
|
||||||
- secrets.dev.yaml?
|
|
||||||
- inf.yaml
|
|
||||||
- app.yaml
|
|
||||||
configurations:
|
|
||||||
develop:
|
|
||||||
build:
|
|
||||||
useGitIgnore: true
|
|
||||||
dockerfile: Dockerfile.develop
|
|
||||||
args:
|
|
||||||
BUILD_CONFIGURATION: ${BUILD_CONFIGURATION:-Debug}
|
|
||||||
container:
|
|
||||||
sync:
|
|
||||||
- '**/Pages/**'
|
|
||||||
- '**/Views/**'
|
|
||||||
- '**/wwwroot/**'
|
|
||||||
- '!**/*.{sln,csproj}'
|
|
||||||
command:
|
|
||||||
- dotnet
|
|
||||||
- run
|
|
||||||
- --no-restore
|
|
||||||
- --no-build
|
|
||||||
- --no-launch-profile
|
|
||||||
- -c
|
|
||||||
- ${BUILD_CONFIGURATION:-Debug}
|
|
||||||
iterate:
|
|
||||||
processesToKill:
|
|
||||||
- dotnet
|
|
||||||
- vsdbg
|
|
||||||
buildCommands:
|
|
||||||
- - dotnet
|
|
||||||
- build
|
|
||||||
- --no-restore
|
|
||||||
- -c
|
|
||||||
- ${BUILD_CONFIGURATION:-Debug}
|
|
Loading…
x
Reference in New Issue
Block a user