Skip to content

Instantly share code, notes, and snippets.

View dalexandrov's full-sized avatar

Dmitry Aleksandrov dalexandrov

View GitHub Profile
package io.helidon.kotlin.examples.quickstart.se
import healthSupport
import io.helidon.common.LogConfig
import io.helidon.config.Config
import io.helidon.health.checks.HealthChecks
import io.helidon.media.jsonp.JsonpSupport
import io.helidon.metrics.MetricsSupport
import io.helidon.webserver.Routing
import io.helidon.webserver.WebServer
package io.helidon.kotlin.examples.quickstart.se
import healthSupport
import io.helidon.common.LogConfig
import io.helidon.config.Config
import io.helidon.health.checks.HealthChecks
import io.helidon.media.jsonp.JsonpSupport
import io.helidon.metrics.MetricsSupport
import io.helidon.webserver.Routing
import io.helidon.webserver.WebServer
@Path("/greet")
@RequestScoped
open class GreetResource
/**
* Using constructor injection to get a configuration property.
* By default this gets the value from META-INF/microprofile-config
*
*/ @Inject constructor(
/**
* The greeting message provider.
<dependency>
<groupId>io.helidon.integrations.neo4j</groupId>
<artifactId>helidon-integrations-neo4j</artifactId>
</dependency>
<dependency>
<groupId>io.helidon.integrations.neo4j</groupId>
<artifactId>helidon-integrations-neo4j-metrics</artifactId>
</dependency>
<dependency>
<groupId>io.helidon.integrations.neo4j</groupId>
Neo4j neo4j = Neo4j.create(config.get("neo4j"));
Neo4jHealthCheck healthCheck = Neo4jHealthCheck.create(neo4j.driver());
Driver neo4jDriver = neo4j.driver();
HealthSupport health = HealthSupport.builder()
.addLiveness(HealthChecks.healthChecks()) // Adds a convenient set of checks
.addReadiness(healthCheck)
.build();
return Routing.builder()
.register(health) // Health at "/health"
<dependency>
<groupId>io.helidon.integrations.neo4j</groupId>
<artifactId>helidon-integrations-neo4j-health</artifactId>
</dependency>
@Readiness
@ApplicationScoped
public class Neo4jHealthCheck implements HealthCheck {
private static final String CYPHER = "RETURN 1 AS result";
private static final SessionConfig DEFAULT_SESSION_CONFIG = SessionConfig.builder()
.withDefaultAccessMode(AccessMode.WRITE)
.build();
private final Driver driver;
@Inject
//will be ignored outside of CDI
public class Neo4jMetricsCdiExtension implements Extension {
private void addMetrics(@Observes @Priority(PLATFORM_AFTER + 101) @Initialized(ApplicationScoped.class) Object event) {
Instance<Driver> driver = CDI.current().select(Driver.class);
Neo4jMetricsSupport.builder()
.driver(driver.get())
.build()
.initialize();
}
}
neo4j:
pool:
metricsEnabled: true
private void refreshMetrics(ScheduledExecutorService executor) {
Collection<ConnectionPoolMetrics> currentPoolMetrics = driver.metrics().connectionPoolMetrics();
if (!metricsInitialized.get() && currentPoolMetrics.size() >= 1) {
lastPoolMetrics.set(currentPoolMetrics);
reinit();
if (metricsInitialized.get()) {
reinitFuture.get().cancel(false);
executor.shutdown();
}
}