コード例 #1
0
        /// <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;
            }
        }
コード例 #2
0
        /// <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");
        }
コード例 #3
0
ファイル: MtsSdk.cs プロジェクト: sportradar/MtsSdkNet
        // 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);
        }
コード例 #4
0
        // 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);
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        /// <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;
            }
        }
コード例 #7
0
 private void SessionLowOnUnparsableMessageReceived(object sender, UnparsableMessageEventArgs unparsableMessageEventArgs)
 {
     _log.Info($"PREMATCH: {unparsableMessageEventArgs.MessageType.GetType()} message came for event {unparsableMessageEventArgs.EventId}.");
 }
コード例 #8
0
ファイル: Basic.cs プロジェクト: biosid/UnifiedOddsSdkNet
 private void SessionOnUnparsableMessageReceived(object sender, UnparsableMessageEventArgs unparsableMessageEventArgs)
 {
     Console.WriteLine($"{unparsableMessageEventArgs.MessageType.GetType()} message came for event {unparsableMessageEventArgs.EventId}.");
 }
コード例 #9
0
 private void SessionOnUnparsableMessageReceived(object sender, UnparsableMessageEventArgs unparsableMessageEventArgs)
 {
     _log.LogInformation($"{unparsableMessageEventArgs.MessageType.GetType()} message came for event {unparsableMessageEventArgs.EventId}.");
 }
コード例 #10
0
 private void OnUnparsableTicketResponseReceived(object sender, UnparsableMessageEventArgs e)
 {
     _log.LogInformation($"Received unparsable ticket response: {e.Body}.");
 }