public Task InvokeAsync() { using (_logger.BeginScope("consumer invoker begin")) { _logger.LogDebug("Executing consumer Topic: {0}", _consumerContext.ConsumerDescriptor.MethodInfo.Name); var obj = ActivatorUtilities.GetServiceOrCreateInstance(_serviceProvider, _consumerContext.ConsumerDescriptor.ImplTypeInfo.AsType()); var value = _consumerContext.DeliverMessage.Content; if (_executor.MethodParameters.Length > 0) { var firstParameter = _executor.MethodParameters[0]; var bindingContext = ModelBindingContext.CreateBindingContext(value, firstParameter.Name, firstParameter.ParameterType); _modelBinder.BindModelAsync(bindingContext); _executor.Execute(obj, bindingContext.Result); } else { _executor.Execute(obj); } return(Task.CompletedTask); } }
private async Task <object> ExecuteAsync(object @class) { if (_executor.IsMethodAsync) { return(await _executor.ExecuteAsync(@class)); } else { return(_executor.Execute(@class)); } }
private async Task <object> ExecuteWithParameterAsync(ObjectMethodExecutor executor, object @class, string parameterString) { var firstParameter = executor.MethodParameters[0]; try { var binder = _modelBinderFactory.CreateBinder(firstParameter); var bindResult = await binder.BindModelAsync(parameterString); if (bindResult.IsSuccess) { if (executor.IsMethodAsync) { return(await executor.ExecuteAsync(@class, bindResult.Model)); } return(executor.Execute(@class, bindResult.Model)); } throw new MethodBindException( $"Parameters:{firstParameter.Name} bind failed! ParameterString is: {parameterString} "); } catch (FormatException ex) { _logger.ModelBinderFormattingException(executor.MethodInfo?.Name, firstParameter.Name, parameterString, ex); return(null); } }
private async Task <object> ExecuteAsync(ObjectMethodExecutor executor, object @class) { if (executor.IsMethodAsync) { return(await executor.ExecuteAsync(@class)); } return(executor.Execute(@class)); }
private async Task<object> ExecuteWithParameterAsync(ObjectMethodExecutor executor, object @class, object[] parameter) { if (executor.IsMethodAsync) { return await executor.ExecuteAsync(@class, parameter); } return executor.Execute(@class, parameter); }
public async Task InvokeAsync() { using (_logger.BeginScope("consumer invoker begin")) { _logger.LogDebug("Executing consumer Topic: {0}", _consumerContext.ConsumerDescriptor.MethodInfo.Name); var obj = ActivatorUtilities.GetServiceOrCreateInstance(_serviceProvider, _consumerContext.ConsumerDescriptor.ImplTypeInfo.AsType()); var value = _consumerContext.DeliverMessage.Content; if (_executor.MethodParameters.Length > 0) { var firstParameter = _executor.MethodParameters[0]; try { var binder = _modelBinderFactory.CreateBinder(firstParameter); var result = await binder.BindModelAsync(value); if (result.IsSuccess) { _executor.Execute(obj, result.Model); } else { _logger.LogWarning($"Parameters:{firstParameter.Name} bind failed! the content is:" + value); } } catch (FormatException ex) { _logger.ModelBinderFormattingException(_executor.MethodInfo?.Name, firstParameter.Name, value, ex); } } else { _executor.Execute(obj); } } }
private async Task <object> ExecuteWithParameterAsync(ObjectMethodExecutor executor, object @class, object[] parameter) { if (executor.IsMethodAsync) { var response = await Helper.TimeOutExecuteAsync(_options.ConsumerMaxTimeOut, async (cts) => await executor.ExecuteAsync(@class, parameter)); return(response); } else { var response = Helper.TimeOutExecute(_options.ConsumerMaxTimeOut, (cts) => executor.Execute(@class, parameter)); return(response); } }