Browse Source

fix(cap): 修复某些情况下事件数据序列化与abp不一致的问题

pull/383/head
cKey 4 years ago
parent
commit
2701c593ea
  1. 23
      aspnet-core/modules/common/LINGYUN.Abp.EventBus.CAP/LINGYUN/Abp/EventBus/CAP/AbpCapSerializer.cs

23
aspnet-core/modules/common/LINGYUN.Abp.EventBus.CAP/LINGYUN/Abp/EventBus/CAP/AbpCapSerializer.cs

@ -3,18 +3,24 @@ using DotNetCore.CAP.Serialization;
using Microsoft.Extensions.Options;
using System;
using System.Buffers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using Volo.Abp.Json;
using Volo.Abp.Json.SystemTextJson;
namespace LINGYUN.Abp.EventBus.CAP
{
public class AbpCapSerializer : ISerializer
{
private readonly IJsonSerializer _jsonSerializer;
private readonly AbpSystemTextJsonSerializerOptions _jsonSerializerOptions;
public AbpCapSerializer(IOptions<AbpSystemTextJsonSerializerOptions> options)
public AbpCapSerializer(
IJsonSerializer jsonSerializer,
IOptions<AbpSystemTextJsonSerializerOptions> options)
{
_jsonSerializer = jsonSerializer;
_jsonSerializerOptions = options.Value;
}
@ -29,8 +35,9 @@ namespace LINGYUN.Abp.EventBus.CAP
{
return Task.FromResult(new TransportMessage(message.Headers, null));
}
var jsonBytes = JsonSerializer.SerializeToUtf8Bytes(message.Value, _jsonSerializerOptions.JsonSerializerOptions);
var messageStr = _jsonSerializer.Serialize(message.Value);
var jsonBytes = Encoding.UTF8.GetBytes(messageStr);
// var jsonBytes = JsonSerializer.SerializeToUtf8Bytes(message.Value, _jsonSerializerOptions.JsonSerializerOptions);
return Task.FromResult(new TransportMessage(message.Headers, jsonBytes));
}
@ -41,19 +48,23 @@ namespace LINGYUN.Abp.EventBus.CAP
return Task.FromResult(new Message(transportMessage.Headers, null));
}
var obj = JsonSerializer.Deserialize(transportMessage.Body, valueType, _jsonSerializerOptions.JsonSerializerOptions);
var messageBytes = Encoding.UTF8.GetString(transportMessage.Body);
var obj = _jsonSerializer.Deserialize(valueType, messageBytes);
// var obj = JsonSerializer.Deserialize(transportMessage.Body, valueType, _jsonSerializerOptions.JsonSerializerOptions);
return Task.FromResult(new Message(transportMessage.Headers, obj));
}
public string Serialize(Message message)
{
return JsonSerializer.Serialize(message, _jsonSerializerOptions.JsonSerializerOptions);
return _jsonSerializer.Serialize(message);
// return JsonSerializer.Serialize(message, _jsonSerializerOptions.JsonSerializerOptions);
}
public Message Deserialize(string json)
{
return JsonSerializer.Deserialize<Message>(json, _jsonSerializerOptions.JsonSerializerOptions);
return _jsonSerializer.Deserialize<Message>(json);
// return JsonSerializer.Deserialize<Message>(json, _jsonSerializerOptions.JsonSerializerOptions);
}
public object Deserialize(object value, Type valueType)

Loading…
Cancel
Save