diff --git a/EnvelopeGenerator.WorkerService/EnvelopeGenerator.WorkerService.csproj b/EnvelopeGenerator.WorkerService/EnvelopeGenerator.WorkerService.csproj
new file mode 100644
index 00000000..868eb4a9
--- /dev/null
+++ b/EnvelopeGenerator.WorkerService/EnvelopeGenerator.WorkerService.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net8.0
+ enable
+ enable
+ dotnet-EnvelopeGenerator.WorkerService-0636abb8-6085-477d-9f56-1a9787e84dde
+
+
+
+
+
+
diff --git a/EnvelopeGenerator.WorkerService/Program.cs b/EnvelopeGenerator.WorkerService/Program.cs
new file mode 100644
index 00000000..b7adaaf1
--- /dev/null
+++ b/EnvelopeGenerator.WorkerService/Program.cs
@@ -0,0 +1,7 @@
+using EnvelopeGenerator.WorkerService;
+
+var builder = Host.CreateApplicationBuilder(args);
+builder.Services.AddHostedService();
+
+var host = builder.Build();
+host.Run();
diff --git a/EnvelopeGenerator.WorkerService/Properties/launchSettings.json b/EnvelopeGenerator.WorkerService/Properties/launchSettings.json
new file mode 100644
index 00000000..ddb5ece8
--- /dev/null
+++ b/EnvelopeGenerator.WorkerService/Properties/launchSettings.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "http://json.schemastore.org/launchsettings.json",
+ "profiles": {
+ "EnvelopeGenerator.WorkerService": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "environmentVariables": {
+ "DOTNET_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/EnvelopeGenerator.WorkerService/Worker.cs b/EnvelopeGenerator.WorkerService/Worker.cs
new file mode 100644
index 00000000..9e5f2f76
--- /dev/null
+++ b/EnvelopeGenerator.WorkerService/Worker.cs
@@ -0,0 +1,24 @@
+namespace EnvelopeGenerator.WorkerService
+{
+ public class Worker : BackgroundService
+ {
+ private readonly ILogger _logger;
+
+ public Worker(ILogger logger)
+ {
+ _logger = logger;
+ }
+
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+ {
+ while (!stoppingToken.IsCancellationRequested)
+ {
+ if (_logger.IsEnabled(LogLevel.Information))
+ {
+ _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
+ }
+ await Task.Delay(1000, stoppingToken);
+ }
+ }
+ }
+}
diff --git a/EnvelopeGenerator.WorkerService/appsettings.Development.json b/EnvelopeGenerator.WorkerService/appsettings.Development.json
new file mode 100644
index 00000000..b2dcdb67
--- /dev/null
+++ b/EnvelopeGenerator.WorkerService/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ }
+}
diff --git a/EnvelopeGenerator.WorkerService/appsettings.json b/EnvelopeGenerator.WorkerService/appsettings.json
new file mode 100644
index 00000000..b2dcdb67
--- /dev/null
+++ b/EnvelopeGenerator.WorkerService/appsettings.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ }
+}
diff --git a/EnvelopeGenerator.sln b/EnvelopeGenerator.sln
index ed12cb43..4b97c373 100644
--- a/EnvelopeGenerator.sln
+++ b/EnvelopeGenerator.sln
@@ -39,6 +39,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Tests", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Jobs", "EnvelopeGenerator.Jobs\EnvelopeGenerator.Jobs.csproj", "{3D0514EA-2681-4B13-AD71-35CC6363DBD7}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.WorkerService", "EnvelopeGenerator.WorkerService\EnvelopeGenerator.WorkerService.csproj", "{E3676510-7030-4E85-86E1-51E483E2A3B6}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -97,6 +99,10 @@ Global
{3D0514EA-2681-4B13-AD71-35CC6363DBD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3D0514EA-2681-4B13-AD71-35CC6363DBD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3D0514EA-2681-4B13-AD71-35CC6363DBD7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E3676510-7030-4E85-86E1-51E483E2A3B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E3676510-7030-4E85-86E1-51E483E2A3B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E3676510-7030-4E85-86E1-51E483E2A3B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E3676510-7030-4E85-86E1-51E483E2A3B6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -118,6 +124,7 @@ Global
{211619F5-AE25-4BA5-A552-BACAFE0632D3} = {9943209E-1744-4944-B1BA-4F87FC1A0EEB}
{224C4845-1CDE-22B7-F3A9-1FF9297F70E8} = {0CBC2432-A561-4440-89BC-671B66A24146}
{3D0514EA-2681-4B13-AD71-35CC6363DBD7} = {9943209E-1744-4944-B1BA-4F87FC1A0EEB}
+ {E3676510-7030-4E85-86E1-51E483E2A3B6} = {9943209E-1744-4944-B1BA-4F87FC1A0EEB}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {73E60370-756D-45AD-A19A-C40A02DACCC7}