Commit bf65b82e authored by Savorboard's avatar Savorboard

add custom message wapper interface

parent 8f108e21
...@@ -7,15 +7,18 @@ namespace DotNetCore.CAP.Internal ...@@ -7,15 +7,18 @@ namespace DotNetCore.CAP.Internal
public class ConsumerInvokerFactory : IConsumerInvokerFactory public class ConsumerInvokerFactory : IConsumerInvokerFactory
{ {
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IMessagePacker _messagePacker;
private readonly IModelBinderFactory _modelBinderFactory; private readonly IModelBinderFactory _modelBinderFactory;
private readonly IServiceProvider _serviceProvider; private readonly IServiceProvider _serviceProvider;
public ConsumerInvokerFactory( public ConsumerInvokerFactory(
ILoggerFactory loggerFactory, ILoggerFactory loggerFactory,
IMessagePacker messagePacker,
IModelBinderFactory modelBinderFactory, IModelBinderFactory modelBinderFactory,
IServiceProvider serviceProvider) IServiceProvider serviceProvider)
{ {
_logger = loggerFactory.CreateLogger<ConsumerInvokerFactory>(); _logger = loggerFactory.CreateLogger<ConsumerInvokerFactory>();
_messagePacker = messagePacker;
_modelBinderFactory = modelBinderFactory; _modelBinderFactory = modelBinderFactory;
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
} }
...@@ -24,7 +27,7 @@ namespace DotNetCore.CAP.Internal ...@@ -24,7 +27,7 @@ namespace DotNetCore.CAP.Internal
{ {
var context = new ConsumerInvokerContext(consumerContext) var context = new ConsumerInvokerContext(consumerContext)
{ {
Result = new DefaultConsumerInvoker(_logger, _serviceProvider, Result = new DefaultConsumerInvoker(_logger, _serviceProvider, _messagePacker,
_modelBinderFactory, consumerContext) _modelBinderFactory, consumerContext)
}; };
......
...@@ -16,14 +16,17 @@ namespace DotNetCore.CAP.Internal ...@@ -16,14 +16,17 @@ namespace DotNetCore.CAP.Internal
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IModelBinderFactory _modelBinderFactory; private readonly IModelBinderFactory _modelBinderFactory;
private readonly IServiceProvider _serviceProvider; private readonly IServiceProvider _serviceProvider;
private readonly IMessagePacker _messagePacker;
public DefaultConsumerInvoker(ILogger logger, public DefaultConsumerInvoker(ILogger logger,
IServiceProvider serviceProvider, IServiceProvider serviceProvider,
IMessagePacker messagePacker,
IModelBinderFactory modelBinderFactory, IModelBinderFactory modelBinderFactory,
ConsumerContext consumerContext) ConsumerContext consumerContext)
{ {
_modelBinderFactory = modelBinderFactory; _modelBinderFactory = modelBinderFactory;
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
_messagePacker = messagePacker;
_logger = logger; _logger = logger;
_consumerContext = consumerContext; _consumerContext = consumerContext;
...@@ -35,7 +38,6 @@ namespace DotNetCore.CAP.Internal ...@@ -35,7 +38,6 @@ namespace DotNetCore.CAP.Internal
{ {
_logger.LogDebug("Executing consumer Topic: {0}", _consumerContext.ConsumerDescriptor.MethodInfo.Name); _logger.LogDebug("Executing consumer Topic: {0}", _consumerContext.ConsumerDescriptor.MethodInfo.Name);
var serializer = _serviceProvider.GetService<IContentSerializer>();
using (var scope = _serviceProvider.CreateScope()) using (var scope = _serviceProvider.CreateScope())
{ {
var provider = scope.ServiceProvider; var provider = scope.ServiceProvider;
...@@ -43,8 +45,8 @@ namespace DotNetCore.CAP.Internal ...@@ -43,8 +45,8 @@ namespace DotNetCore.CAP.Internal
var obj = ActivatorUtilities.GetServiceOrCreateInstance(provider, serviceType); var obj = ActivatorUtilities.GetServiceOrCreateInstance(provider, serviceType);
var jsonContent = _consumerContext.DeliverMessage.Content; var jsonContent = _consumerContext.DeliverMessage.Content;
var message = serializer.DeSerialize<CapMessageDto>(jsonContent); var message = _messagePacker.UnPack(jsonContent);
object result; object result;
if (_executor.MethodParameters.Length > 0) if (_executor.MethodParameters.Length > 0)
result = await ExecuteWithParameterAsync(obj, message.Content); result = await ExecuteWithParameterAsync(obj, message.Content);
......
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