diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Configuration/BackgroundTaskSettings.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Configuration/BackgroundTaskSettings.cs
deleted file mode 100644
index 2b42f6084..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Configuration/BackgroundTaskSettings.cs
+++ /dev/null
@@ -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; }
- }
-}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile b/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile
deleted file mode 100644
index 820f8d4b1..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile
+++ /dev/null
@@ -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"]
\ No newline at end of file
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile.develop b/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile.develop
deleted file mode 100644
index 5f5d002db..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile.develop
+++ /dev/null
@@ -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", "--"]
\ No newline at end of file
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/IntegrationEvents/GracePeriodConfirmedIntegrationEvent.cs b/src/Services/Ordering/Ordering.BackgroundTasks/IntegrationEvents/GracePeriodConfirmedIntegrationEvent.cs
deleted file mode 100644
index df008ad90..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/IntegrationEvents/GracePeriodConfirmedIntegrationEvent.cs
+++ /dev/null
@@ -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;
- }
-}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj
deleted file mode 100644
index 3cca3adb7..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
- $(NetCoreTargetVersion)
- $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
- ..\..\..\..\docker-compose.dcproj
- false
- true
- $(LangVersion)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs
deleted file mode 100644
index 7a429742e..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs
+++ /dev/null
@@ -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()
- .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();
- }
- }
-}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Properties/launchSettings.json b/src/Services/Ordering/Ordering.BackgroundTasks/Properties/launchSettings.json
deleted file mode 100644
index 6d60a7d28..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Properties/launchSettings.json
+++ /dev/null
@@ -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/"
- }
- }
-}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs
deleted file mode 100644
index 6035beaeb..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs
+++ /dev/null
@@ -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(Configuration);
- services.AddOptions();
-
- //configure background task
-
- services.AddSingleton();
-
- //configure event bus related services
-
- if (Configuration.GetValue("AzureServiceBusEnabled"))
- {
- services.AddSingleton(sp =>
- {
- var logger = sp.GetRequiredService>();
-
- var serviceBusConnectionString = Configuration["EventBusConnection"];
- var serviceBusConnection = new ServiceBusConnectionStringBuilder(serviceBusConnectionString);
-
- return new DefaultServiceBusPersisterConnection(serviceBusConnection, logger);
- });
- }
- else
- {
- services.AddSingleton(sp =>
- {
- var logger = sp.GetRequiredService>();
-
-
- 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("AzureServiceBusEnabled"))
- {
- services.AddSingleton(sp =>
- {
- var serviceBusPersisterConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
- var logger = sp.GetRequiredService>();
- var eventBusSubcriptionsManager = sp.GetRequiredService();
-
- return new EventBusServiceBus(serviceBusPersisterConnection, logger,
- eventBusSubcriptionsManager, subscriptionClientName, iLifetimeScope);
- });
- }
- else
- {
- services.AddSingleton(sp =>
- {
- var rabbitMQPersistentConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
- var logger = sp.GetRequiredService>();
- var eventBusSubcriptionsManager = sp.GetRequiredService();
-
- var retryCount = 5;
- if (!string.IsNullOrEmpty(Configuration["EventBusRetryCount"]))
- {
- retryCount = int.Parse(Configuration["EventBusRetryCount"]);
- }
-
- return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
- });
- }
-
- services.AddSingleton();
- }
- }
-
- 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("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;
- }
- }
-}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Tasks/GracePeriodManagerTask.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Tasks/GracePeriodManagerTask.cs
deleted file mode 100644
index 328fb95c4..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Tasks/GracePeriodManagerTask.cs
+++ /dev/null
@@ -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 _logger;
- private readonly BackgroundTaskSettings _settings;
- private readonly IEventBus _eventBus;
-
- public GracePeriodManagerService(
- IOptions settings,
- IEventBus eventBus,
- ILogger 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 GetConfirmedGracePeriodOrders()
- {
- IEnumerable orderIds = new List();
-
- using (var conn = new SqlConnection(_settings.ConnectionString))
- {
- try
- {
- conn.Open();
- orderIds = conn.Query(
- @"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;
- }
- }
-}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.Development.json b/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.Development.json
deleted file mode 100644
index fa8ce71a9..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.Development.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "Logging": {
- "IncludeScopes": false,
- "LogLevel": {
- "Default": "Debug",
- "System": "Information",
- "Microsoft": "Information"
- }
- }
-}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json b/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json
deleted file mode 100644
index 51250be9d..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json
+++ /dev/null
@@ -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": ""
-}
\ No newline at end of file
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/azds.yaml b/src/Services/Ordering/Ordering.BackgroundTasks/azds.yaml
deleted file mode 100644
index e92eca09f..000000000
--- a/src/Services/Ordering/Ordering.BackgroundTasks/azds.yaml
+++ /dev/null
@@ -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}