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)
{