diff --git a/DigitalData.MessagingService.Publisher/DigitalData.MessagingService.Publisher.Abstraction.csproj b/DigitalData.MessagingService.Publisher/DigitalData.MessagingService.Publisher.Abstraction.csproj
new file mode 100644
index 0000000..ab2d2aa
--- /dev/null
+++ b/DigitalData.MessagingService.Publisher/DigitalData.MessagingService.Publisher.Abstraction.csproj
@@ -0,0 +1,10 @@
+
+
+
+ net462;net480;net8.0
+ latest
+ enable
+ latest
+
+
+
diff --git a/src/DigitalData.MessagingService.Application/Common/Interfaces/IOutgoingEmailPublisher.cs b/DigitalData.MessagingService.Publisher/IOutgoingEmailPublisher.cs
similarity index 60%
rename from src/DigitalData.MessagingService.Application/Common/Interfaces/IOutgoingEmailPublisher.cs
rename to DigitalData.MessagingService.Publisher/IOutgoingEmailPublisher.cs
index a964979..b30666a 100644
--- a/src/DigitalData.MessagingService.Application/Common/Interfaces/IOutgoingEmailPublisher.cs
+++ b/DigitalData.MessagingService.Publisher/IOutgoingEmailPublisher.cs
@@ -1,7 +1,7 @@
-using DigitalData.MessagingService.Application.Common.Events;
-using DigitalData.MessagingService.Application.EmailSending.Commands;
+using System.Threading;
+using System.Threading.Tasks;
-namespace DigitalData.MessagingService.Application.Common.Interfaces;
+namespace DigitalData.MessagingService.Publisher.Abstraction;
///
/// Email queue interface for outgoing emails.
diff --git a/DigitalData.MessagingService.Publisher/OutgoingEmailEvent.cs b/DigitalData.MessagingService.Publisher/OutgoingEmailEvent.cs
new file mode 100644
index 0000000..ea66be9
--- /dev/null
+++ b/DigitalData.MessagingService.Publisher/OutgoingEmailEvent.cs
@@ -0,0 +1,30 @@
+using System;
+
+namespace DigitalData.MessagingService.Publisher.Abstraction;
+
+public class OutgoingEmailEvent
+{
+ public Guid Id { get; set; }
+
+ ///
+ /// Recipient email address
+ ///
+ public string Recipient { get; set; } = null!;
+
+ ///
+ /// Email subject
+ ///
+ public string Subject { get; set; } = null!;
+
+ ///
+ /// Email body (HTML or plain text)
+ ///
+ public string Body { get; set; } = null!;
+
+ ///
+ /// Is HTML email (default: true)
+ ///
+ public bool IsHtml { get; set; } = true;
+
+ public DateTime QueuedAt { get; set; }
+}
\ No newline at end of file
diff --git a/DigitalData.MessagingService.sln b/DigitalData.MessagingService.sln
index 319987d..e5dbe7b 100644
--- a/DigitalData.MessagingService.sln
+++ b/DigitalData.MessagingService.sln
@@ -37,6 +37,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.MessagingServic
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.MessagingService.Client.Infrastructure", "DigitalData.MessagingService.Client.Infrastructure\DigitalData.MessagingService.Client.Infrastructure.csproj", "{4ED75E1B-FE53-4AA9-AB83-E35E25049D6D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.MessagingService.Publisher.Abstraction", "DigitalData.MessagingService.Publisher\DigitalData.MessagingService.Publisher.Abstraction.csproj", "{99CA4C0E-75A5-4143-97BB-9C605E65E692}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -75,6 +77,10 @@ Global
{4ED75E1B-FE53-4AA9-AB83-E35E25049D6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4ED75E1B-FE53-4AA9-AB83-E35E25049D6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4ED75E1B-FE53-4AA9-AB83-E35E25049D6D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {99CA4C0E-75A5-4143-97BB-9C605E65E692}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {99CA4C0E-75A5-4143-97BB-9C605E65E692}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {99CA4C0E-75A5-4143-97BB-9C605E65E692}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {99CA4C0E-75A5-4143-97BB-9C605E65E692}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -89,8 +95,9 @@ Global
{DD9D4A3A-AB55-456E-80D3-54A2D4025E64} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{71BEA4D0-7835-4A8C-B11E-1088E0801DCE} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{5B941DD2-7D0E-5D58-5D32-7E1B4C249CBC} = {71BEA4D0-7835-4A8C-B11E-1088E0801DCE}
- {C553F2ED-1585-E143-70E5-44A8D64D1BDF} = {DD9D4A3A-AB55-456E-80D3-54A2D4025E64}
+ {C553F2ED-1585-E143-70E5-44A8D64D1BDF} = {B52B4CEE-1C67-424B-8659-370FEA7EAF2A}
{4ED75E1B-FE53-4AA9-AB83-E35E25049D6D} = {71BEA4D0-7835-4A8C-B11E-1088E0801DCE}
+ {99CA4C0E-75A5-4143-97BB-9C605E65E692} = {DD9D4A3A-AB55-456E-80D3-54A2D4025E64}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {90E29FDC-F6C6-414F-94BF-25DF61D18060}
diff --git a/src/DigitalData.MessagingService.Application/Common/Events/OutgoingEmailEvent.cs b/src/DigitalData.MessagingService.Application/Common/Events/OutgoingEmailEvent.cs
deleted file mode 100644
index 5969de1..0000000
--- a/src/DigitalData.MessagingService.Application/Common/Events/OutgoingEmailEvent.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-namespace DigitalData.MessagingService.Application.Common.Events;
-
-public class OutgoingEmailEvent
-{
- public required Guid Id { get; init; }
-
- ///
- /// Recipient email address
- ///
- public required string Recipient { get; init; }
-
- ///
- /// Email subject
- ///
- public required string Subject { get; init; }
-
- ///
- /// Email body (HTML or plain text)
- ///
- public required string Body { get; init; }
-
- ///
- /// Is HTML email (default: true)
- ///
- public bool IsHtml { get; init; } = true;
-
- public DateTime QueuedAt { get; init; }
-}
\ No newline at end of file
diff --git a/src/DigitalData.MessagingService.Application/Common/Mappings/EmailMappingProfile.cs b/src/DigitalData.MessagingService.Application/Common/Mappings/EmailMappingProfile.cs
index 331efa1..70659d7 100644
--- a/src/DigitalData.MessagingService.Application/Common/Mappings/EmailMappingProfile.cs
+++ b/src/DigitalData.MessagingService.Application/Common/Mappings/EmailMappingProfile.cs
@@ -1,6 +1,6 @@
using AutoMapper;
-using DigitalData.MessagingService.Application.Common.Events;
using DigitalData.MessagingService.Application.EmailSending.Commands;
+using DigitalData.MessagingService.Publisher.Abstraction;
namespace DigitalData.MessagingService.Application.Common.Mappings;
diff --git a/src/DigitalData.MessagingService.Application/DigitalData.MessagingService.Application.csproj b/src/DigitalData.MessagingService.Application/DigitalData.MessagingService.Application.csproj
index 24af99d..f5b56b5 100644
--- a/src/DigitalData.MessagingService.Application/DigitalData.MessagingService.Application.csproj
+++ b/src/DigitalData.MessagingService.Application/DigitalData.MessagingService.Application.csproj
@@ -7,6 +7,7 @@
+
diff --git a/src/DigitalData.MessagingService.Application/EmailSending/Commands/SendEmailCommand.cs b/src/DigitalData.MessagingService.Application/EmailSending/Commands/SendEmailCommand.cs
index 89e98bb..3db5d89 100644
--- a/src/DigitalData.MessagingService.Application/EmailSending/Commands/SendEmailCommand.cs
+++ b/src/DigitalData.MessagingService.Application/EmailSending/Commands/SendEmailCommand.cs
@@ -1,6 +1,5 @@
using AutoMapper;
-using DigitalData.MessagingService.Application.Common.Events;
-using DigitalData.MessagingService.Application.Common.Interfaces;
+using DigitalData.MessagingService.Publisher.Abstraction;
using MediatR;
namespace DigitalData.MessagingService.Application.EmailSending.Commands;
diff --git a/src/DigitalData.MessagingService.Infrastructure/DependencyInjection.cs b/src/DigitalData.MessagingService.Infrastructure/DependencyInjection.cs
index d5f1a6a..b191789 100644
--- a/src/DigitalData.MessagingService.Infrastructure/DependencyInjection.cs
+++ b/src/DigitalData.MessagingService.Infrastructure/DependencyInjection.cs
@@ -2,6 +2,7 @@ using DigitalData.MessagingService.Application.Common.Interfaces;
using DigitalData.MessagingService.Infrastructure.Queue;
using DigitalData.MessagingService.Infrastructure.Services;
using DigitalData.MessagingService.Infrastructure.Services.Background;
+using DigitalData.MessagingService.Publisher.Abstraction;
using DigitalData.MessagingService.RabbitMQ;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Configuration;
diff --git a/src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailConsumer.cs b/src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailConsumer.cs
index 5516511..80da0ee 100644
--- a/src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailConsumer.cs
+++ b/src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailConsumer.cs
@@ -1,12 +1,12 @@
using System.Text;
using System.Text.Json;
using DigitalData.MessagingService.Application.Common.Interfaces;
+using DigitalData.MessagingService.Publisher.Abstraction;
using DigitalData.MessagingService.RabbitMQ;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
-using DigitalData.MessagingService.Application.Common.Events;
namespace DigitalData.MessagingService.Infrastructure.Queue;
diff --git a/src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailPublisher.cs b/src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailPublisher.cs
index d11545a..2ff0fa7 100644
--- a/src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailPublisher.cs
+++ b/src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailPublisher.cs
@@ -1,11 +1,10 @@
using System.Text;
using System.Text.Json;
-using DigitalData.MessagingService.Application.Common.Interfaces;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using RabbitMQ.Client;
-using DigitalData.MessagingService.Application.Common.Events;
using DigitalData.MessagingService.RabbitMQ;
+using DigitalData.MessagingService.Publisher.Abstraction;
namespace DigitalData.MessagingService.Infrastructure.Queue;