Commit 53f72d8e authored by Savorboard's avatar Savorboard

fixed issue #45

parent 756935ab
using System; using System;
using DotNetCore.CAP.Abstractions; using DotNetCore.CAP.Abstractions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace DotNetCore.CAP.Internal namespace DotNetCore.CAP.Internal
...@@ -23,15 +22,13 @@ namespace DotNetCore.CAP.Internal ...@@ -23,15 +22,13 @@ namespace DotNetCore.CAP.Internal
public IConsumerInvoker CreateInvoker(ConsumerContext consumerContext) public IConsumerInvoker CreateInvoker(ConsumerContext consumerContext)
{ {
using (var scope = _serviceProvider.CreateScope()) var context = new ConsumerInvokerContext(consumerContext)
{ {
var context = new ConsumerInvokerContext(consumerContext) Result = new DefaultConsumerInvoker(_logger, _serviceProvider,
{ _modelBinderFactory, consumerContext)
Result = new DefaultConsumerInvoker(_logger, scope.ServiceProvider, _modelBinderFactory, consumerContext) };
};
return context.Result; return context.Result;
}
} }
} }
} }
\ No newline at end of file
...@@ -35,25 +35,29 @@ namespace DotNetCore.CAP.Internal ...@@ -35,25 +35,29 @@ 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 obj = ActivatorUtilities.GetServiceOrCreateInstance(_serviceProvider, using (var scope = _serviceProvider.CreateScope())
_consumerContext.ConsumerDescriptor.ImplTypeInfo.AsType()); {
var provider = scope.ServiceProvider;
var serviceType = _consumerContext.ConsumerDescriptor.ImplTypeInfo.AsType();
var obj = ActivatorUtilities.GetServiceOrCreateInstance(provider, serviceType);
var jsonConent = _consumerContext.DeliverMessage.Content; var jsonConent = _consumerContext.DeliverMessage.Content;
var message = Helper.FromJson<Message>(jsonConent); var message = Helper.FromJson<Message>(jsonConent);
object result = null; object result = null;
if (_executor.MethodParameters.Length > 0) if (_executor.MethodParameters.Length > 0)
{ {
result = await ExecuteWithParameterAsync(obj, message.Content.ToString()); result = await ExecuteWithParameterAsync(obj, message.Content.ToString());
} }
else else
{ {
result = await ExecuteAsync(obj); result = await ExecuteAsync(obj);
} }
if (!string.IsNullOrEmpty(message.CallbackName)) if (!string.IsNullOrEmpty(message.CallbackName))
{ {
await SentCallbackMessage(message.Id, message.CallbackName, result); await SentCallbackMessage(message.Id, message.CallbackName, result);
}
} }
} }
......
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