diff --git a/osu.Server.QueueProcessor/QueueConfiguration.cs b/osu.Server.QueueProcessor/QueueConfiguration.cs index 1cf6820..c3f252c 100644 --- a/osu.Server.QueueProcessor/QueueConfiguration.cs +++ b/osu.Server.QueueProcessor/QueueConfiguration.cs @@ -1,3 +1,5 @@ +using Newtonsoft.Json; + namespace osu.Server.QueueProcessor { public class QueueConfiguration @@ -34,5 +36,10 @@ public class QueueConfiguration /// Setting above 1 will allow processing in batches (see ). /// public int BatchSize { get; set; } = 1; + + /// + /// Serialization settings to use when deserializing items from redis. + /// + public JsonSerializerSettings? JsonSerializerSettings { get; set; } = null; } } diff --git a/osu.Server.QueueProcessor/QueueProcessor.cs b/osu.Server.QueueProcessor/QueueProcessor.cs index 329bf58..0782a84 100644 --- a/osu.Server.QueueProcessor/QueueProcessor.cs +++ b/osu.Server.QueueProcessor/QueueProcessor.cs @@ -118,7 +118,7 @@ public void Run(CancellationToken cancellation = default) // null or empty check is required for redis 6.x. 7.x reports `null` instead. foreach (var redisItem in redisItems.Where(i => !i.IsNullOrEmpty)) - items.Add(JsonConvert.DeserializeObject(redisItem) ?? throw new InvalidOperationException("Dequeued item could not be deserialised.")); + items.Add(JsonConvert.DeserializeObject(redisItem, config.JsonSerializerSettings) ?? throw new InvalidOperationException("Dequeued item could not be deserialised.")); if (items.Count == 0) {