/// <summary> /// 双向数据流事件处理 /// </summary> protected async Task StartGrpcStreamAsync() { try { var eventStream = grpcClient.Event(new EventRequest()); while (await eventStream.ResponseStream.MoveNext()) { OnGrpcStreamEvent(eventStream.ResponseStream.Current); } } catch (Exception ex) { StopRequest st = new StopRequest() { }; CallOptions call = new CallOptions() { }; grpcClient.Stop(st, call); var eventResetPayload = new EventResetPayload() { Data = ex.StackTrace }; Emit(eventResetPayload); throw ex; } }
private void ThrottleReset(EventResetPayload payload) { if (_resetThrottleQueue != null) { _resetThrottleQueue.OnNext(payload.Data); } }
/// <summary> /// 双向数据流事件处理 /// </summary> protected void StartGrpcStream() { try { var eventStream = grpcClient.Event(new EventRequest()); var stream = Task.Run(async() => { await foreach (var resp in eventStream.ResponseStream.ReadAllAsync()) { await OnGrpcStreamEvent(resp); } }); } catch (Exception ex) { EventResetPayload eventResetPayload = new EventResetPayload() { Data = ex.StackTrace }; _localEventBus.PublishAsync(eventResetPayload); } }
public virtual bool Emit(EventResetPayload payload) => Emit("reset", payload);