public static EurekaServerMetricFactory serverMetrics() { if (INSTANCE == null) { synchronized (EurekaServerMetricFactory.class) { MessageConnectionMetrics registrationConnectionMetrics = new MessageConnectionMetrics("registration"); registrationConnectionMetrics.bindMetrics(); MessageConnectionMetrics replicationConnectionMetrics = new MessageConnectionMetrics("replication"); replicationConnectionMetrics.bindMetrics(); MessageConnectionMetrics discoveryConnectionMetrics = new MessageConnectionMetrics("discovery"); discoveryConnectionMetrics.bindMetrics(); InterestChannelMetrics interestChannelMetrics = new InterestChannelMetrics(); interestChannelMetrics.bindMetrics(); INSTANCE = new EurekaServerMetricFactory( registrationConnectionMetrics, replicationConnectionMetrics, discoveryConnectionMetrics, interestChannelMetrics ); } } return INSTANCE; } }
metrics.decrementConnectionCounter(); metrics.connectionDuration(startTime);
/** * This method is thread safe, and it may be called concurrently. */ private void drainPendingAckQueue() { PendingAck pendingAck; while ((pendingAck = pendingAckQueue.poll()) != null) { metrics.decrementPendingAckCounter(); try { /** * TODO Although send onError here is what we should do, in current code it produces a lot misleading noise. */ pendingAck.onCompleted(); // pendingAck.onError(createException(CancellationException.class, "request cancelled")); } catch (Exception e) { logger.warn("Acknowledgement subscriber hasn't handled properly onError", e); } } }
bind(MessageConnectionMetrics.class).annotatedWith(Names.named("registration")).toInstance(new MessageConnectionMetrics("registration")); bind(MessageConnectionMetrics.class).annotatedWith(Names.named("replication")).toInstance(new MessageConnectionMetrics("replication")); bind(MessageConnectionMetrics.class).annotatedWith(Names.named("discovery")).toInstance(new MessageConnectionMetrics("discovery")); bind(MessageConnectionMetrics.class).annotatedWith(Names.named("clientRegistration")).toInstance(new MessageConnectionMetrics("clientRegistration")); bind(MessageConnectionMetrics.class).annotatedWith(Names.named("clientDiscovery")).toInstance(new MessageConnectionMetrics("clientDiscovery")); bind(MessageConnectionMetrics.class).annotatedWith(Names.named("clientReplication")).toInstance(new MessageConnectionMetrics("clientReplication"));
public BaseMessageConnection( String name, ObservableConnection<Object, Object> connection, MessageConnectionMetrics metrics, Scheduler expiryScheduler) { this.connection = connection; this.metrics = metrics; this.name = descriptiveName(name); schedulerWorker = expiryScheduler.createWorker(); installAcknowledgementHandler(); this.startTime = expiryScheduler.now(); metrics.incrementConnectionCounter(); }
bind(MessageConnectionMetrics.class).annotatedWith(Names.named("registration")).toInstance(new MessageConnectionMetrics("registration")); bind(MessageConnectionMetrics.class).annotatedWith(Names.named("replication")).toInstance(new MessageConnectionMetrics("replication")); bind(MessageConnectionMetrics.class).annotatedWith(Names.named("discovery")).toInstance(new MessageConnectionMetrics("discovery"));
public static EurekaClientMetricFactory clientMetrics() { if (INSTANCE == null) { synchronized (EurekaClientMetricFactory.class) { EurekaClientRegistryMetrics registryMetrics = new EurekaClientRegistryMetrics("client"); registryMetrics.bindMetrics(); MessageConnectionMetrics registrationServerConnectionMetrics = new MessageConnectionMetrics("clientRegistration"); registrationServerConnectionMetrics.bindMetrics(); MessageConnectionMetrics discoveryServerConnectionMetrics = new MessageConnectionMetrics("clientDiscovery"); discoveryServerConnectionMetrics.bindMetrics(); RegistrationChannelMetrics registrationChannelMetrics = new RegistrationChannelMetrics(); registrationChannelMetrics.bindMetrics(); InterestChannelMetrics interestChannelMetrics = new InterestChannelMetrics(); interestChannelMetrics.bindMetrics(); INSTANCE = new EurekaClientMetricFactory(registryMetrics, registrationServerConnectionMetrics, discoveryServerConnectionMetrics, registrationChannelMetrics, interestChannelMetrics); } } return INSTANCE; } }
bind(MessageConnectionMetrics.class).annotatedWith(Names.named("registration")).toInstance(new MessageConnectionMetrics("registration")); bind(MessageConnectionMetrics.class).annotatedWith(Names.named("replication")).toInstance(new MessageConnectionMetrics("replication")); bind(MessageConnectionMetrics.class).annotatedWith(Names.named("discovery")).toInstance(new MessageConnectionMetrics("discovery")); bind(MessageConnectionMetrics.class).annotatedWith(Names.named("clientReplication")).toInstance(new MessageConnectionMetrics("clientReplication"));
@Override public void call(Acknowledgement acknowledgement) { PendingAck pending = pendingAckQueue.poll(); metrics.decrementPendingAckCounter(); if (pending == null) { shutdown(new IllegalStateException("{connection=" + name + "}: unexpected acknowledgment")); } else { pending.ackSubject.onCompleted(); } } });
synchronized (WriteServerMetricFactory.class) { MessageConnectionMetrics clientRegistration = new MessageConnectionMetrics("clientRegistration"); clientRegistration.bindMetrics(); MessageConnectionMetrics clientDiscovery = new MessageConnectionMetrics("clientDiscovery"); clientDiscovery.bindMetrics(); MessageConnectionMetrics clientReplication = new MessageConnectionMetrics("clientReplication"); clientReplication.bindMetrics();