/// <summary> /// 处理当前消息。 /// </summary> protected void ProcessHandler(Type messageType, IMessage message, IProxyHandler messageHandler) { var @event = message as EventStream; if (@event != null) { messageHandler.Handle(message); return; } if (_logger.IsDebugEnabled) _logger.DebugFormat("executing a message. data:{0}", DefaultTextSerializer.Instance.Serialize(message)); var messageHandlerType = messageHandler.GetInnerHandler().GetType(); try { if (_handlerStore.IsHandlerInfoExist(message.Id, messageType, messageHandlerType)) { if (_logger.IsInfoEnabled) _logger.InfoFormat("The message has been handled. messageHandlerType:{0}, messageType:{1}, messageId:{2}", messageHandlerType.FullName, messageType.FullName, message.Id); return; } messageHandler.Handle(message); if (_logger.IsInfoEnabled) _logger.InfoFormat("Handle message success. messageHandlerType:{0}, messageType:{1}, messageId:{2}", messageHandlerType.FullName, messageType.FullName, message.Id); } catch (Exception ex) { if (_logger.IsErrorEnabled) { string errorMessage = string.Format("Exception raised when {0} handling {1}. message info:{2}.", messageHandlerType.FullName, messageType.FullName, message); _logger.Error(errorMessage, ex); } throw ex; } finally { _handlerStore.AddHandlerInfo(message.Id, messageType, messageHandlerType); using (messageHandler as IDisposable) { } if (_logger.IsDebugEnabled) _logger.DebugFormat("message executed. messageId:{0}", message.Id); } }
/// <summary> /// 处理当前消息。 /// </summary> protected void ProcessHandler(Type messageType, IMessage message, IProxyHandler messageHandler) { var messageHandlerType = messageHandler.GetInnerHandler().GetType(); try { if (message is EventStream) { messageHandler.Handle(message); } else { var messageHandlerTypeCode = _typeCodeProvider.GetTypeCode(messageHandlerType); var messageTypeCode = _typeCodeProvider.GetTypeCode(messageType); var messageHandlerInfo = new HandlerRecordData(message.Id, messageHandlerTypeCode, messageTypeCode); if (!_handlerStore.IsHandlerInfoExist(messageHandlerInfo)) { messageHandler.Handle(message); _handlerStore.AddHandlerInfo(messageHandlerInfo); } _logger.Debug("Handle message success. messageHandlerType:{0}, messageType:{1}, messageId:{2}", messageHandlerType.FullName, messageType.FullName, message.Id); } } catch (Exception ex) { if (!(message is EventStream)) { string errorMessage = string.Format("Exception raised when {0} handling {1}. message info:{2}.", messageHandlerType.FullName, messageType.FullName, message.ToString()); _logger.Error(ex, errorMessage); } throw ex; } finally { if (messageHandler is IDisposable) { ((IDisposable)messageHandler).Dispose(); } } }