From 99ba2209512af12fb94517251af7920701e9c82d Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Tue, 13 May 2025 11:23:21 +0800 Subject: [PATCH] =?UTF-8?q?options:=E6=B6=88=E6=81=AF=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96=E5=A2=9E=E5=8A=A0NewtonsoftJson=E5=92=8CProtoBuf?= =?UTF-8?q?=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Kafka/WarningCalcServiceExtension.cs | 36 ++++++++++++++++--- .../SJZY.Track.Application.csproj | 6 ++-- .../Services/Warning/Signals/WarningSignal.cs | 3 +- .../Warning/Signals/WarningSignalKey.cs | 3 +- .../Warning/Signals/WarningSignalMetadata.cs | 5 +-- 5 files changed, 42 insertions(+), 11 deletions(-) diff --git a/src/SJZY.Track.Application/Kafka/WarningCalcServiceExtension.cs b/src/SJZY.Track.Application/Kafka/WarningCalcServiceExtension.cs index 0583380b..485e6ab8 100644 --- a/src/SJZY.Track.Application/Kafka/WarningCalcServiceExtension.cs +++ b/src/SJZY.Track.Application/Kafka/WarningCalcServiceExtension.cs @@ -1,3 +1,6 @@ +//#define ProtoBuf +#define NewtonsoftJson +using System.Globalization; using System.Net; using System.Text.Json; using System.Text.Json.Serialization; @@ -6,6 +9,9 @@ using Confluent.Kafka.Core.Consumer; using Confluent.Kafka.Core.Producer; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Serialization; using SJZY.Expand.ABP.Core.Logger; using SJZY.Track.Application.Helpers; using SJZY.Track.Application.Services.Warning.Signals; @@ -78,11 +84,22 @@ public static class WarningCalcServiceExtension reportFuncWrapper.Debounce(); }); - //bb.WithProtobufNetDeserializer(); +#if ProtoBuf + bb.WithProtobufNetDeserializer(); + +#elif NewtonsoftJson + bb.WithNewtonsoftJsonDeserializer(builder => + builder.WithNullValueHandling(NullValueHandling.Ignore) // Ignores null values + .WithReferenceLoopHandling(ReferenceLoopHandling.Ignore) // Ignores reference loops + .WithContractResolver(new CamelCasePropertyNamesContractResolver()) // Camel case property names + ); +#else bb.WithJsonCoreDeserializer(bc => bc.WithReferenceHandler(ReferenceHandler.IgnoreCycles) // Handles circular references .WithPropertyNamingPolicy(JsonNamingPolicy.CamelCase) // Uses camelCase naming - .WithDefaultIgnoreCondition(JsonIgnoreCondition.WhenWritingNull)); + .WithDefaultIgnoreCondition(JsonIgnoreCondition.WhenWritingNull) + ); +#endif return (bb.Build() as IKafkaConsumer)!; }); } @@ -137,13 +154,22 @@ public static class WarningCalcServiceExtension reportFuncWrapper.Debounce(); }); +#if ProtoBuf // 2000w条消息数据包压缩从 2g -> 1g - // bb.WithProtobufNetSerializer(); - + bb.WithProtobufNetSerializer(); +#elif NewtonsoftJson + bb.WithNewtonsoftJsonSerializer(builder => + builder.WithNullValueHandling(NullValueHandling.Ignore) // Ignores null values + .WithReferenceLoopHandling(ReferenceLoopHandling.Ignore) // Ignores reference loops + .WithContractResolver(new CamelCasePropertyNamesContractResolver()) // Camel case property names + ); +#else bb.WithJsonCoreSerializer(bc => bc.WithReferenceHandler(ReferenceHandler.IgnoreCycles) // Handles circular references .WithPropertyNamingPolicy(JsonNamingPolicy.CamelCase) // Uses camelCase naming - .WithDefaultIgnoreCondition(JsonIgnoreCondition.WhenWritingNull)); + .WithDefaultIgnoreCondition(JsonIgnoreCondition.WhenWritingNull) + ); +#endif return (bb.Build() as IKafkaProducer)!; }); } diff --git a/src/SJZY.Track.Application/SJZY.Track.Application.csproj b/src/SJZY.Track.Application/SJZY.Track.Application.csproj index fc27bea7..fcb4b392 100644 --- a/src/SJZY.Track.Application/SJZY.Track.Application.csproj +++ b/src/SJZY.Track.Application/SJZY.Track.Application.csproj @@ -9,10 +9,12 @@ - - + + + + diff --git a/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignal.cs b/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignal.cs index 963268ca..28479223 100644 --- a/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignal.cs +++ b/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignal.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using Newtonsoft.Json; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; namespace SJZY.Track.Application.Services.Warning.Signals; @@ -20,6 +20,7 @@ public readonly struct WarningSignal // public int OrderType { get; set; } // public int SubSystemId { get; set; } + [System.Text.Json.Serialization.JsonConstructor] [JsonConstructor] public WarningSignal(WarningSignalType type, int orderId, string esId, int trackStatusId, int trackContentId) { diff --git a/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignalKey.cs b/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignalKey.cs index 46499c9d..32d7e9b1 100644 --- a/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignalKey.cs +++ b/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignalKey.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using Newtonsoft.Json; namespace SJZY.Track.Application.Services.Warning.Signals; @@ -10,6 +10,7 @@ public readonly struct WarningSignalKey : IEquatable public WarningSignalType Type { get; } public int OrderId { get; } + [System.Text.Json.Serialization.JsonConstructor] [JsonConstructor] public WarningSignalKey(WarningSignalType type, int orderId) { diff --git a/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignalMetadata.cs b/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignalMetadata.cs index 9b5b8a26..41f39e4b 100644 --- a/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignalMetadata.cs +++ b/src/SJZY.Track.Application/Services/Warning/Signals/WarningSignalMetadata.cs @@ -1,6 +1,6 @@ -using System.Text.Json; -using System.Text.Json.Serialization; using Confluent.Kafka; +using Newtonsoft.Json; +using JsonSerializer = System.Text.Json.JsonSerializer; namespace SJZY.Track.Application.Services.Warning.Signals; @@ -20,6 +20,7 @@ public struct WarningSignalMetadata : IEquatable /// 最后一次出错的原因 public string LastErrorReason { get; set; } + [System.Text.Json.Serialization.JsonIgnore] [JsonIgnore] public Message OwenMessage { get; set; }