/**
   * Start topology event receiver thread.
   *
   * @param executorService executor service instance
   * @param topologyProvider topology provider instance
   */
  private void startTopologyEventReceiver(
      ExecutorService executorService, TopologyProvider topologyProvider) {
    // Enforcing the listener order in order execute extension listener later
    topologyEventReceiver = new LoadBalancerCommonTopologyEventReceiver(topologyProvider, false);
    // Add load-balancer extension event listener
    addTopologyEventListeners(topologyEventReceiver);
    // Add default topology provider event listeners
    topologyEventReceiver.addEventListeners();
    topologyEventReceiver.setExecutorService(executorService);
    topologyEventReceiver.execute();
    if (log.isInfoEnabled()) {
      log.info("Topology receiver thread started");
    }

    if (log.isInfoEnabled()) {
      if (TopologyServiceFilter.getInstance().isActive()) {
        log.info(
            String.format(
                "Service filter activated: [filter] %s",
                TopologyServiceFilter.getInstance().toString()));
      }

      if (TopologyClusterFilter.getInstance().isActive()) {
        log.info(
            String.format(
                "Cluster filter activated: [filter] %s",
                TopologyClusterFilter.getInstance().toString()));
      }

      if (TopologyMemberFilter.getInstance().isActive()) {
        log.info(
            String.format(
                "Member filter activated: [filter] %s",
                TopologyMemberFilter.getInstance().toString()));
      }
    }
  }