diff --git a/Cassandra.DistributedTaskQueue.Monitoring/Indexer/RtqElasticsearchIndexerSettings.cs b/Cassandra.DistributedTaskQueue.Monitoring/Indexer/RtqElasticsearchIndexerSettings.cs index 6cef3801..287d960e 100644 --- a/Cassandra.DistributedTaskQueue.Monitoring/Indexer/RtqElasticsearchIndexerSettings.cs +++ b/Cassandra.DistributedTaskQueue.Monitoring/Indexer/RtqElasticsearchIndexerSettings.cs @@ -23,18 +23,6 @@ public RtqElasticsearchIndexerSettings(string eventFeedKey, string rtqGraphitePa RtqGraphitePathPrefix = rtqGraphitePathPrefix; } - public static JsonSerializerOptions GetJsonOptions() - { - var defaultJsonSerializerOptions = new JsonSerializerOptions(); - defaultJsonSerializerOptions.Converters.Add(new TruncateLongStringsConverter(500)); - defaultJsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); - defaultJsonSerializerOptions.Converters.Add(new TimestampJsonConverter()); - defaultJsonSerializerOptions.Converters.Add(new TimeGuidJsonConverter()); - defaultJsonSerializerOptions.Converters.Add(new OmitBinaryAndAbstractPropertyConverter()); - - return defaultJsonSerializerOptions; - } - public string EventFeedKey { get; } public string RtqGraphitePathPrefix { get; } @@ -66,4 +54,16 @@ public override string ToString() $"IndexingThreadsCount: {IndexingThreadsCount}, " + $"BulkIndexRequestTimeout: {BulkIndexRequestTimeout}"; } + + public static readonly JsonSerializerOptions DefaultJsonSerializerSettings = new() + { + Converters = + { + new TruncateLongStringsConverter(500), + new JsonStringEnumConverter(), + new TimestampJsonConverter(), + new TimeGuidJsonConverter(), + new OmitBinaryAndAbstractPropertyConverter() + } + }; } \ No newline at end of file diff --git a/Cassandra.DistributedTaskQueue.Monitoring/Indexer/TaskMetaProcessor.cs b/Cassandra.DistributedTaskQueue.Monitoring/Indexer/TaskMetaProcessor.cs index 52ceb0d7..aac2fdb5 100644 --- a/Cassandra.DistributedTaskQueue.Monitoring/Indexer/TaskMetaProcessor.cs +++ b/Cassandra.DistributedTaskQueue.Monitoring/Indexer/TaskMetaProcessor.cs @@ -92,7 +92,7 @@ private void IndexBatch((TaskMetaInformation TaskMeta, TaskExceptionInfo[] TaskE { payload[2 * i] = JsonSerializer.Serialize(new {index = CreateIndexInfo(batch[i].TaskMeta)}); var taskIndexedInfo = BuildTaskIndexedInfo(batch[i].TaskMeta, batch[i].TaskExceptionInfos, batch[i].TaskData); - payload[2 * i + 1] = JsonSerializer.Serialize(taskIndexedInfo, RtqElasticsearchIndexerSettings.GetJsonOptions()); + payload[2 * i + 1] = JsonSerializer.Serialize(taskIndexedInfo, RtqElasticsearchIndexerSettings.DefaultJsonSerializerSettings); } perfGraphiteReporter.ReportTiming("ElasticsearchClient_Bulk", () => elasticClient.Bulk(PostData.MultiJson(payload), bulkRequestTimeout).DieIfBulkRequestFailed()); } diff --git a/Cassandra.DistributedTaskQueue.Monitoring/Json/JsonObjectExtensions.cs b/Cassandra.DistributedTaskQueue.Monitoring/Json/JsonObjectExtensions.cs index 114bcc11..9bf2d9f3 100644 --- a/Cassandra.DistributedTaskQueue.Monitoring/Json/JsonObjectExtensions.cs +++ b/Cassandra.DistributedTaskQueue.Monitoring/Json/JsonObjectExtensions.cs @@ -9,11 +9,16 @@ internal static class JsonObjectExtensions { public static string ToPrettyJson(this T obj) { - var options = new JsonSerializerOptions(); - options.Converters.Add(new JsonStringEnumConverter()); - options.Converters.Add(new TimestampJsonConverter()); - options.Converters.Add(new TimeGuidJsonConverter()); - - return JsonSerializer.Serialize(obj, options); + return JsonSerializer.Serialize(obj, jsonSerializerSettings); } + + private static readonly JsonSerializerOptions jsonSerializerSettings = new() + { + Converters = + { + new JsonStringEnumConverter(), + new TimestampJsonConverter(), + new TimeGuidJsonConverter() + } + }; } \ No newline at end of file diff --git a/Cassandra.DistributedTaskQueue.Monitoring/Json/ObjectJsonSerializer.cs b/Cassandra.DistributedTaskQueue.Monitoring/Json/TaskDataJsonSerializer.cs similarity index 59% rename from Cassandra.DistributedTaskQueue.Monitoring/Json/ObjectJsonSerializer.cs rename to Cassandra.DistributedTaskQueue.Monitoring/Json/TaskDataJsonSerializer.cs index 13e528a2..3bcbf87d 100644 --- a/Cassandra.DistributedTaskQueue.Monitoring/Json/ObjectJsonSerializer.cs +++ b/Cassandra.DistributedTaskQueue.Monitoring/Json/TaskDataJsonSerializer.cs @@ -15,11 +15,16 @@ public override IRtqTaskData Read(ref Utf8JsonReader reader, Type typeToConvert, public override void Write(Utf8JsonWriter writer, IRtqTaskData value, JsonSerializerOptions options) { - JsonSerializerOptions jsonSerializerOptions = new(); - jsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); - jsonSerializerOptions.Converters.Add(new TimeGuidJsonConverter()); - jsonSerializerOptions.Converters.Add(new TimestampJsonConverter()); - - JsonSerializer.Serialize(writer, value, jsonSerializerOptions); + JsonSerializer.Serialize(writer, value, staticSerializerOptions); } + + private static readonly JsonSerializerOptions staticSerializerOptions = new() + { + Converters = + { + new JsonStringEnumConverter(), + new TimeGuidJsonConverter(), + new TimestampJsonConverter() + } + }; } \ No newline at end of file diff --git a/Cassandra.DistributedTaskQueue.Tests/UnitTests/Monitoring/TaskIndexInfoSerializationTest.cs b/Cassandra.DistributedTaskQueue.Tests/UnitTests/Monitoring/TaskIndexInfoSerializationTest.cs index fa55e950..1f3da523 100644 --- a/Cassandra.DistributedTaskQueue.Tests/UnitTests/Monitoring/TaskIndexInfoSerializationTest.cs +++ b/Cassandra.DistributedTaskQueue.Tests/UnitTests/Monitoring/TaskIndexInfoSerializationTest.cs @@ -73,7 +73,7 @@ private void Check(TaskIndexedInfo source, TaskIndexedInfo expected) private string Serialize(object obj) { - return JsonSerializer.Serialize(obj, obj.GetType(), RtqElasticsearchIndexerSettings.GetJsonOptions()); + return JsonSerializer.Serialize(obj, obj.GetType(), RtqElasticsearchIndexerSettings.DefaultJsonSerializerSettings); } private class Data