Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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());
 }