/// <inheritdoc /> public void SendResponseErrorMessage(string replyQueue, RequestMessage requestMessage, Exception exception) { var responseErrorMessage = new ResponseErrorMessage { RequesterServerName = requestMessage.RequesterServerName, RequesterServiceName = requestMessage.RequesterServiceName, ResponderServerName = _processInformation.MachineName, ResponderServiceName = _messageBusConfig.ServiceName, RequestId = requestMessage.RequestId, ReplyQueue = replyQueue, RequestMessage = requestMessage, Exception = exception, RequestDateTime = requestMessage.RequestDateTime, ResponseDateTime = DateTimeOffset.Now, CompletedDateTime = null }; SendToMessageBroker(responseErrorMessage); }
internal void HandleClientMessage(object sender, MessageEventArgs args) { var msg = default(IMessage); try { msg = Serializer.Deserialize(args.Data, MessageTypeProvider, this); } catch (JsonServicesException ex) { if (ex.MessageId == null) { // don't know how to route a message when its identity is unknown UnhandledException?.Invoke(this, new ThreadExceptionEventArgs(ex)); return; } // handle it as an error response msg = new ResponseErrorMessage { Id = ex.MessageId, Error = new Error(ex), }; } catch (Exception ex) { // message identity is unknown because it's a generic exception UnhandledException?.Invoke(this, new ThreadExceptionEventArgs(ex)); return; } // match the response with the pending request message if (msg is ResponseMessage responseMessage) { HandleResponseMessage(responseMessage, args.Data); return; } // handle request message (server-side event) HandleRequestMessage((RequestMessage)msg); }
/// <inheritdoc /> /// <summary> /// Exception in Request Handler /// </summary> /// <param name="requestMessage">Request message</param> /// <param name="responseErrorMessage">Response error message</param> public RequestHandlerException(RequestMessage requestMessage, ResponseErrorMessage responseErrorMessage) : base("Exception in Request Handler", responseErrorMessage.Exception) { Data.Add(nameof(requestMessage), requestMessage?.TrySerializeToJson()); Data.Add(nameof(responseErrorMessage), responseErrorMessage.TrySerializeToJson()); }