@Inject public PreservableEurekaRegistry(@Named("delegate") EurekaServerRegistry eurekaRegistry, EvictionQueue evictionQueue, EvictionStrategy evictionStrategy, WriteServerMetricFactory metricFactory) { this.eurekaRegistry = eurekaRegistry; this.evictionStrategy = evictionStrategy; this.evictionSubscriber = new EvictionSubscriber(); this.evictionSubscription = evictionQueue.pendingEvictions().subscribe(evictionSubscriber); metricFactory.getEurekaServerRegistryMetrics().setSelfPreservationMonitor(this); }
@Override public RegistrationChannel newRegistrationChannel() { return new RegistrationChannelImpl(registry, evictionQueue, connection, metricFactory.getRegistrationChannelMetrics()); }
@Override public ReplicationChannel newReplicationChannel() { return new ReceiverReplicationChannel(connection, selfRegistrationService, registry, evictionQueue, metricFactory.getReplicationChannelMetrics()); }
public EurekaServerRegistryImpl(WriteServerMetricFactory metricsFactory, Scheduler scheduler) { this.metrics = metricsFactory.getEurekaServerRegistryMetrics(); this.metrics.setRegistrySizeMonitor(this); invoker = new NotificationTaskInvoker( metricsFactory.getRegistryTaskInvokerMetrics(), scheduler); internalStore = new ConcurrentHashMap<>(); indexRegistry = new IndexRegistryImpl<>(); notificationSubject = NotificationsSubject.create(); internalStoreAccessor = new MultiSourcedDataHolder.HolderStoreAccessor<NotifyingInstanceInfoHolder>() { @Override public void add(NotifyingInstanceInfoHolder holder) { internalStore.put(holder.getId(), holder); } @Override public NotifyingInstanceInfoHolder get(String id) { return internalStore.get(id); } @Override public void remove(String id) { internalStore.remove(id); } @Override public boolean contains(String id) { return internalStore.containsKey(id); } }; }
registryTaskInvokerMetrics.bindMetrics(); INSTANCE = new WriteServerMetricFactory( serverMetrics().getRegistrationConnectionMetrics(), serverMetrics().getReplicationConnectionMetrics(), serverMetrics().getDiscoveryConnectionMetrics(), registrationChannelMetrics, replicationChannelMetrics, serverMetrics().getInterestChannelMetrics(), eurekaServerRegistryMetrics, evictionQueueMetrics,
public EvictionQueueImpl(WriteServerConfig config, WriteServerMetricFactory metricFactory, Scheduler scheduler) { this.evictionTimeoutMs = config.getEvictionTimeoutMs(); this.evictionQueueMetrics = metricFactory.getEvictionQueueMetrics(); this.worker = scheduler.createWorker(); evictionQueueMetrics.setEvictionQueueSizeMonitor(this); }
@Override public ReplicationChannel call() { return new SenderReplicationChannel( new ReplicationTransportClient(address, codec, metricFactory.getReplicationServerConnectionMetrics()) ); } };
@Override public Observable<Void> handle(ObservableConnection<Object, Object> connection) { MessageConnection broker = new HeartBeatConnection( new BaseMessageConnection("replication", connection, metricFactory.getReplicationConnectionMetrics()), 30000, 3, Schedulers.computation() ); final ServerChannelFactory service = new ServerChannelFactoryImpl(registry, selfRegistrationService, evictionQueue, broker, metricFactory); return service.newReplicationChannel().asLifecycleObservable(); } }
@Override public Observable<Void> handle(ObservableConnection<Object, Object> connection) { MessageConnection broker = new HeartBeatConnection( new BaseMessageConnection("registration", connection, metricFactory.getRegistrationConnectionMetrics()), HEARTBEAT_INTERVAL_MILLIS, 3, Schedulers.computation() ); final ServerChannelFactory service = new ServerChannelFactoryImpl(registry, null, evictionQueue, broker, metricFactory); return service.newRegistrationChannel() .asLifecycleObservable(); // Since this is a discovery handler which only handles interest subscriptions, // the channel is created on connection accept. } }