/// <summary> /// 具体执行 /// </summary> private void RunSignle() { var socket = ZSocket.CreateClientSocket(Config.WorkerResultAddress, ZSocketType.DEALER); { using (var pool = ZmqPool.CreateZmqPool()) { pool.Prepare(new[] { ZSocket.CreateClientSocket(Config.WorkerCallAddress, ZSocketType.PULL, Identity) }, ZPollEvent.In); State = StationState.Run; while (CanLoop) { if (!pool.Poll() || !pool.CheckIn(0, out var message)) { continue; } Interlocked.Increment(ref RecvCount); using (message) { if (!Unpack(message, out var item)) { SendLayoutErrorResult(ref socket, item.Caller); continue; } ApiCall(ref socket, item); } } } } socket.Dispose(); IocHelper.DisposeScope(); _processSemaphore?.Release(); }
private Task <HttpResponseMessage> DoEnd(Task <HttpResponseMessage> t1, HttpRequestMessage request, CancellationToken cancellationToken) { try { t1.Wait(cancellationToken); HttpResponseMessage result; if (t1.IsCanceled) { LogRecorder.MonitorTrace("操作被取消"); result = request.ToResponse(ApiResult.Error(-7, "服务器正忙", "操作被取消")); LogRecorder.EndMonitor(); return(Task <HttpResponseMessage> .Factory.StartNew(() => result, cancellationToken)); } if (t1.IsFaulted) { LogRecorder.MonitorTrace(t1.Exception?.Message); LogRecorder.Exception(t1.Exception); result = request.ToResponse(ApiResult.Error(-1, "未知错误", t1.Exception?.Message)); } else { result = t1.Result; } return(Task <HttpResponseMessage> .Factory.StartNew(delegate { OnEnd(request, result, cancellationToken); return result; }, cancellationToken)); } finally { IocHelper.DisposeScope(); } }