From 1fd5796b05f22045d4cb488b9ca324be3ef3401a Mon Sep 17 00:00:00 2001 From: Ross Stewart Date: Mon, 18 May 2026 14:52:04 +0100 Subject: [PATCH 1/3] Deserialize in Common --- src/JsonMessage.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/JsonMessage.cs diff --git a/src/JsonMessage.cs b/src/JsonMessage.cs new file mode 100644 index 0000000..2d1a5c1 --- /dev/null +++ b/src/JsonMessage.cs @@ -0,0 +1,20 @@ +using System.Text; +using System.Text.Json; + +namespace Linn.Common.Messaging.RabbitMQ; + +public class JsonMessage(Message message) where T : class +{ + private static readonly JsonSerializerOptions JsonOptions = new() + { + PropertyNameCaseInsensitive = true + }; + + public string RoutingKey { get; } = message.RoutingKey; + + public IReadOnlyDictionary Headers { get; } = message.Headers; + + public T? Body { get; } = JsonSerializer.Deserialize( + Encoding.UTF8.GetString(message.Body.ToArray()), + JsonOptions); +} From a5e0144b4b9be6defefeae335fb45563117b5258 Mon Sep 17 00:00:00 2001 From: Ross Stewart Date: Mon, 18 May 2026 14:57:54 +0100 Subject: [PATCH 2/3] update version --- src/Linn.Common.Messaging.RabbitMQ.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Linn.Common.Messaging.RabbitMQ.csproj b/src/Linn.Common.Messaging.RabbitMQ.csproj index 7b36b58..15784bc 100644 --- a/src/Linn.Common.Messaging.RabbitMQ.csproj +++ b/src/Linn.Common.Messaging.RabbitMQ.csproj @@ -1,11 +1,11 @@ - + Utilities for requesting data from other (proxy) services. net10.0 enable Linn.Common.Messaging.RabbitMQ Linn.Common.Messaging.RabbitMQ - 5.0.0 + 5.1.0 enable From 0fca79492e3c0d03c4834e25c6b037242746da03 Mon Sep 17 00:00:00 2001 From: Ross Stewart Date: Mon, 18 May 2026 15:39:50 +0100 Subject: [PATCH 3/3] Pr feedback --- src/JsonMessage.cs | 20 -------------------- src/JsonMessageHandler.cs | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 20 deletions(-) delete mode 100644 src/JsonMessage.cs create mode 100644 src/JsonMessageHandler.cs diff --git a/src/JsonMessage.cs b/src/JsonMessage.cs deleted file mode 100644 index 2d1a5c1..0000000 --- a/src/JsonMessage.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Text; -using System.Text.Json; - -namespace Linn.Common.Messaging.RabbitMQ; - -public class JsonMessage(Message message) where T : class -{ - private static readonly JsonSerializerOptions JsonOptions = new() - { - PropertyNameCaseInsensitive = true - }; - - public string RoutingKey { get; } = message.RoutingKey; - - public IReadOnlyDictionary Headers { get; } = message.Headers; - - public T? Body { get; } = JsonSerializer.Deserialize( - Encoding.UTF8.GetString(message.Body.ToArray()), - JsonOptions); -} diff --git a/src/JsonMessageHandler.cs b/src/JsonMessageHandler.cs new file mode 100644 index 0000000..55fe337 --- /dev/null +++ b/src/JsonMessageHandler.cs @@ -0,0 +1,16 @@ +using System.Text.Json; + +namespace Linn.Common.Messaging.RabbitMQ; + +public abstract class JsonMessageHandler(string routingKey) : IMessageHandler +{ + public string RoutingKey { get; } = routingKey; + + public async Task HandleAsync(Message message, CancellationToken cancellationToken) + { + var body = JsonSerializer.Deserialize(message.Body.Span); + await this.HandleAsync(body, cancellationToken); + } + + protected abstract Task HandleAsync(T? body, CancellationToken cancellationToken); +}