public async Task <TMessageResult> ProcessAsync <TMessage, TMessageResult>(TMessage message, ServerCallContext callContext) where TMessage : BaseMessage where TMessageResult : MessageResult, new() { try { var context = new GrpcContext(message, callContext); await _builder.DelegateProxyAsync(context); if (context.Result is TMessageResult) { return((TMessageResult)context.Result); } else { return(new TMessageResult() { Code = context.Result.Code, Message = context.Result.Message }); } } catch (Exception ex) { _logger.Error("消息处理失败,原因:{@Message},Msg:{@message}", ex, new object[] { message, ex.Message }); return(new TMessageResult() { Code = ResultCode.Exception, Message = "服务处理出错,请重试!" }); } }
public async Task <TMessageResult> ProcessAsync <TMessage, TMessageResult>( TMessage message, ServerCallContext callContext) where TMessage : BaseMessage where TMessageResult : MessageResult, new() { try { var context = new GrpcContext(message, callContext); await _builder.DelegateProxyAsync(context); if (context.Result is TMessageResult) { return((TMessageResult)context.Result); } else { throw new InvalidOperationException("Cannot convert message result!"); } } catch (Exception ex) { _log.LogError(ex, $"Message execute failed! reason:{ex.GetExceptionMessage()} Request:{_jsonSerializer.Serialize(message)}"); throw; } }
public async Task <IMessageResultEnvelope> ProcessAsync( GrpcContext context, Func <IMessageEnvelope, IServiceScope, Task <IMessageResultEnvelope> > handler) { try { context.Hander = handler; await _builder.DelegateProxyAsync(context); return(context.Result); } catch (Exception ex) { _log.LogError(ex, $"Message execute failed! reason:{ex.GetExceptionMessage()} Request:{_jsonSerializer.Serialize(context.Message)}"); throw; } }
public Task <TMessageResult> ProcessAsync <TMessage, TMessageResult>(TMessage message, ServerCallContext callContext) where TMessage : BaseMessage where TMessageResult : MessageResult, new() { return(Task.Run(() => { var context = new GrpcContext(message, callContext); _builder.DelegateProxy(context); if (context.Result is TMessageResult) { return (TMessageResult)context.Result; } else { return new TMessageResult() { Code = context.Result.Code, Message = context.Result.Message }; } })); }
protected override Task DoHandleAsync(GrpcContext context) { Console.WriteLine("heelo"); return(Task.CompletedTask); }