Commit 7cd55522 authored by Savorboard's avatar Savorboard

add IMessagePacker

parent f768e62d
......@@ -47,7 +47,7 @@ namespace DotNetCore.CAP.Internal
object result;
if (_executor.MethodParameters.Length > 0)
result = await ExecuteWithParameterAsync(obj, message.Content.ToString());
result = await ExecuteWithParameterAsync(obj, message.Content);
else
result = await ExecuteAsync(obj);
......@@ -89,23 +89,27 @@ namespace DotNetCore.CAP.Internal
private async Task SentCallbackMessage(string messageId, string topicName, object bodyObj)
{
var callbackMessage = new CapMessageDto
{
Id = messageId,
Content = bodyObj
};
using (var scope = _serviceProvider.CreateScope())
{
var provider = scope.ServiceProvider;
var publisher = provider.GetRequiredService<ICallbackPublisher>();
var serializer = provider.GetService<IContentSerializer>();
var packer = provider.GetService<IMessagePacker>();
var callbackMessage = new CapMessageDto
{
Id = messageId,
Content = serializer.Serialize(bodyObj)
};
var content = packer.Pack(callbackMessage);
var publishedMessage = new CapPublishedMessage
{
Name = topicName,
Content = Helper.ToJson(callbackMessage),
Content = content,
StatusName = StatusName.Scheduled
};
await publisher.PublishAsync(publishedMessage);
}
}
......
......@@ -6,12 +6,12 @@ namespace DotNetCore.CAP.Internal
{
public class JsonContentSerializer : IContentSerializer
{
public T DeSerialize<T>(string messageObjStr) where T : CapMessageDto, new()
public T DeSerialize<T>(string messageObjStr)
{
return Helper.FromJson<T>(messageObjStr);
}
public string Serialize<T>(T messageObj) where T : CapMessageDto, new()
public string Serialize<T>(T messageObj)
{
return Helper.ToJson(messageObj);
}
......
using DotNetCore.CAP.Abstractions;
using DotNetCore.CAP.Models;
namespace DotNetCore.CAP.Internal
{
public class DefaultMessagePacker : IMessagePacker
{
private readonly IContentSerializer _serializer;
public DefaultMessagePacker(IContentSerializer serializer)
{
_serializer = serializer;
}
public string Pack(CapMessage obj)
{
return _serializer.Serialize(obj);
}
public CapMessage UnPack(string packingMessage)
{
return _serializer.DeSerialize<CapMessageDto>(packingMessage);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment