protected virtual void HandleMessage(string physicalChannel, RedisValue rawMessage, IMessageProcessor processor)
        {
            try
            {
                if (!_messageParser.TryParse(rawMessage, out var parsedMessage))
                {
                    OnInvalidMessageFormat(physicalChannel, rawMessage);
                    return;
                }

                processor.ProcessMessage(parsedMessage, physicalChannel);
            }
            catch (Exception exception)
            {
                var shouldRethrowException = OnMessageHandlingException(exception);

                if (shouldRethrowException)
                {
                    throw;
                }
            }
        }