/// <summary> /// Handles the <see cref="IMessageReceiver.FeedMessageReceived"/> event /// </summary> /// <param name="sender">A <see cref="object"/> representation of the instance raising the event</param> /// <param name="e">A <see cref="FeedMessageReceivedEventArgs"/> instance containing event information</param> private void OnMessageReceived(object sender, FeedMessageReceivedEventArgs e) { var message = e.Message; var validationResult = _messageValidator.Validate(message); switch (validationResult) { case ValidationResult.FAILURE: Log.Warn($"{WriteMessageInterest()}Validation of message=[{message}] failed. Raising OnUnparsableMessageReceived event"); var messageType = _messageDataExtractor.GetMessageTypeFromMessage(message); var eventArgs = new UnparsableMessageEventArgs(messageType, message.ProducerId.ToString(), message.EventId, e.RawMessage); Dispatch(OnUnparsableMessageReceived, eventArgs, "OnUnparsableMessageReceived"); return; case ValidationResult.PROBLEMS_DETECTED: Log.Warn($"{WriteMessageInterest()}Problems were detected while validating message=[{message}], but the message is still eligible for further processing."); _messageProcessor.ProcessMessage(message, MessageInterest, e.RawMessage); return; case ValidationResult.SUCCESS: Metric.Context("FEED").Meter($"FeedSession->MessageReceived ({MessageInterest.ProducerId})", Unit.Items).Mark(); Log.Debug($"{WriteMessageInterest()}Message=[{message}] successfully validated. Continuing with message processing."); _messageProcessor.ProcessMessage(message, MessageInterest, e.RawMessage); return; default: Log.Error($"{WriteMessageInterest()}ValidationResult {Enum.GetName(typeof(ValidationResult), validationResult)} is not supported. Aborting processing of message=[{message}]."); return; } }
/// <summary> /// Handles the <see cref="IMessageReceiver.FeedMessageDeserializationFailed" /> event. /// </summary> /// <param name="sender">A <see cref="object"/> representation of the instance raising the event.</param> /// <param name="eventArgs">The <see cref="MessageDeserializationFailedEventArgs"/> instance containing the event data.</param> private void OnFeedMessageDeserializationFailed(object sender, MessageDeserializationFailedEventArgs eventArgs) { var rawData = eventArgs.RawData as byte[] ?? eventArgs.RawData.ToArray(); var basicMessageData = _messageDataExtractor.GetBasicMessageData(rawData); _log.LogInformation($"Extracted the following data from unparsed message data: [{basicMessageData}], raising OnUnparsableMessageReceived event"); var dispatchmentEventArgs = new UnparsableMessageEventArgs(basicMessageData.MessageType, basicMessageData.ProducerId, basicMessageData.EventId, rawData); Dispatch(UnparsableMessageReceived, dispatchmentEventArgs, "OnUnparsableMessageReceived"); }
// ReSharper disable once UnusedParameter.Local private void OnMqMessageDeserializationFailed(object sender, MessageDeserializationFailedEventArgs eventArgs) { var rawData = eventArgs.RawData as byte[] ?? eventArgs.RawData.ToArray(); var basicMessageData = TicketHelper.ParseUnparsableMsg(rawData); ExecutionLog.Info($"Extracted the following data from unparsed message data: [{basicMessageData}], raising OnUnparsableMessageReceived event"); var dispatchEventArgs = new UnparsableMessageEventArgs(basicMessageData); Metric.Context("MtsSdk").Meter("TicketDeserializationFailed", Unit.Items).Mark(); UnparsableTicketResponseReceived?.Invoke(this, dispatchEventArgs); }
// ReSharper disable once UnusedParameter.Local private void OnMqMessageDeserializationFailed(object sender, MessageDeserializationFailedEventArgs eventArgs) { var rawData = eventArgs.RawData as byte[] ?? eventArgs.RawData.ToArray(); var basicMessageData = TicketHelper.ParseUnparsableMsg(rawData); _executionLog.LogInformation($"Extracted the following data from unparsed message data: [{basicMessageData}], raising OnUnparsableMessageReceived event"); var dispatchEventArgs = new UnparsableMessageEventArgs(basicMessageData); _metricsRoot.Measure.Meter.Mark(new MeterOptions { Context = "MtsSdk", Name = "TicketDeserializationFailed", MeasurementUnit = Unit.Calls }); UnparsableTicketResponseReceived?.Invoke(this, dispatchEventArgs); }
/// <summary> /// Handles the <see cref="IMessageReceiver.FeedMessageDeserializationFailed" /> event. /// </summary> /// <param name="sender">A <see cref="object"/> representation of the instance raising the event.</param> /// <param name="eventArgs">The <see cref="MessageDeserializationFailedEventArgs"/> instance containing the event data.</param> private void OnMessageDeserializationFailed(object sender, MessageDeserializationFailedEventArgs eventArgs) { var rawData = eventArgs.RawData as byte[] ?? eventArgs.RawData.ToArray(); var basicMessageData = _messageDataExtractor.GetBasicMessageData(rawData); ExecutionLog.LogInformation($"{WriteMessageInterest()}Extracted the following data from unparsed message data: [{basicMessageData}], raising OnUnparsableMessageReceived event"); var dispatchmentEventArgs = new UnparsableMessageEventArgs(basicMessageData.MessageType, basicMessageData.ProducerId, basicMessageData.EventId, rawData); var producerId = 0; if (!string.IsNullOrEmpty(basicMessageData.ProducerId)) { int.TryParse(basicMessageData.ProducerId, out producerId); } Dispatch(OnUnparsableMessageReceived, dispatchmentEventArgs, "OnUnparsableMessageReceived", producerId); }
/// <summary> /// Handles the <see cref="IMessageReceiver.FeedMessageReceived"/> event /// </summary> /// <param name="sender">A <see cref="object"/> representation of the instance raising the event</param> /// <param name="e">A <see cref="FeedMessageReceivedEventArgs"/> instance containing event information</param> private void OnFeedMessageReceived(object sender, FeedMessageReceivedEventArgs e) { var message = e.Message; var validationResult = _messageValidator.Validate(message); switch (validationResult) { case ValidationResult.FAILURE: _log.LogWarning($"Validation of message=[{message}] failed. Raising OnUnparsableMessageReceived event"); MessageType messageType; try { messageType = _messageDataExtractor.GetMessageTypeFromMessage(message); } catch (ArgumentException ex) { _log.LogError($"An error occurred while determining the MessageType of the message whose validation has failed. Message={message}", ex); return; } var eventArgs = new UnparsableMessageEventArgs(messageType, message.ProducerId.ToString(), message.EventId, e.RawMessage); Dispatch(UnparsableMessageReceived, eventArgs, "OnUnparsableMessageReceived"); return; case ValidationResult.PROBLEMS_DETECTED: _log.LogWarning($"Problems were detected while validating message=[{message}], but the message is still eligible for further processing."); return; case ValidationResult.SUCCESS: _log.LogDebug($"Message=[{message}] successfully validated. Continuing with message processing"); ProcessMessage(message, e.RawMessage); return; default: _log.LogError($"ValidationResult {Enum.GetName(typeof(ValidationResult), validationResult)} is not supported. Aborting processing of message=[{message}]"); return; } }
private void SessionLowOnUnparsableMessageReceived(object sender, UnparsableMessageEventArgs unparsableMessageEventArgs) { _log.Info($"PREMATCH: {unparsableMessageEventArgs.MessageType.GetType()} message came for event {unparsableMessageEventArgs.EventId}."); }
private void SessionOnUnparsableMessageReceived(object sender, UnparsableMessageEventArgs unparsableMessageEventArgs) { Console.WriteLine($"{unparsableMessageEventArgs.MessageType.GetType()} message came for event {unparsableMessageEventArgs.EventId}."); }
private void SessionOnUnparsableMessageReceived(object sender, UnparsableMessageEventArgs unparsableMessageEventArgs) { _log.LogInformation($"{unparsableMessageEventArgs.MessageType.GetType()} message came for event {unparsableMessageEventArgs.EventId}."); }
private void OnUnparsableTicketResponseReceived(object sender, UnparsableMessageEventArgs e) { _log.LogInformation($"Received unparsable ticket response: {e.Body}."); }