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; }