/// <summary>
        /// Initializes the telemetry module.
        /// </summary>
        /// <param name="configuration">Telemetry configuration to use for initialization.</param>
        public void Initialize(TelemetryConfiguration configuration)
        {
            _telemetryClient = new TelemetryClient(configuration);

            if (configuration != null && configuration.TelemetryChannel != null)
            {
                _telemetryChannelEnpoint = configuration.TelemetryChannel.EndpointAddress;
            }

            _serviceRemotingServerEventListener = new ServiceRemotingServerEventListener(
                configuration,
                this.EffectiveProfileQueryEndpoint,
                this.SetComponentCorrelationHttpHeaders);
        }
        /// <summary>
        /// Initializes the telemetry module.
        /// </summary>
        /// <param name="configuration">Telemetry configuration to use for initialization.</param>
        public void Initialize(TelemetryConfiguration configuration)
        {
            // Prevent the telemetry module from being initialized multiple times.
            // A serious side effect of multiple initialization is the Service Remoting events could be registered multiple times, which will break the correlation.
            if (_isInitialized)
            {
                return;
            }
            _isInitialized = true;

            _telemetryClient = new TelemetryClient(configuration);

            if (configuration != null && configuration.TelemetryChannel != null)
            {
                _telemetryChannelEnpoint = configuration.TelemetryChannel.EndpointAddress;
            }

            _serviceRemotingServerEventListener = new ServiceRemotingServerEventListener(
                configuration,
                this.EffectiveProfileQueryEndpoint,
                this.SetComponentCorrelationHttpHeaders);
        }