All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.eureka2.server.service.BridgeService Maven / Gradle / Ivy

package com.netflix.eureka2.server.service;

import com.netflix.discovery.DiscoveryClient;
import com.netflix.eureka2.registry.InstanceInfo;
import com.netflix.eureka2.server.BridgeServerConfig;
import com.netflix.eureka2.server.registry.EurekaServerRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.concurrent.atomic.AtomicReference;

/**
 * @author David Liu
 */
@Singleton
public class BridgeService {
    private static final Logger logger = LoggerFactory.getLogger(BridgeService.class);

    private final BridgeServerConfig config;
    private final EurekaServerRegistry registry;
    private final DiscoveryClient discoveryClient;

    private final AtomicReference channelRef;

    @Inject
    public BridgeService(BridgeServerConfig config,
                         EurekaServerRegistry registry,
                         DiscoveryClient discoveryClient) {

        this.config = config;
        this.registry = registry;
        this.discoveryClient = discoveryClient;

        channelRef = new AtomicReference<>();
    }

    @SuppressWarnings("unchecked")
    @PostConstruct
    public void connect() {
        logger.info("Starting bridge service");
        BridgeChannel channel = new BridgeChannel(registry, discoveryClient, config.getRefreshRateSec());
        if (channelRef.compareAndSet(null, channel)) {
            channel.connect();
        } else {
            logger.debug("No op, already connected");
        }
    }

    @PreDestroy
    public void close() {
        logger.info("Closing bridge service");
        BridgeChannel channel = channelRef.getAndSet(null);
        if (channel != null) {
            channel.close();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy