adam bien's blog

Creating Domain-Specific Metrics On-The-Fly with MicroProfile 📎

Domain-specific counters can be created on-the-fly by injecting the MetricRegistry:


import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import org.eclipse.microprofile.metrics.MetricRegistry;
import org.eclipse.microprofile.metrics.annotation.RegistryType;    

@Path("ping")
public class PingResource {
    
    @Inject
    @RegistryType(type = MetricRegistry.Type.APPLICATION)
    MetricRegistry registry;

    @GET
    public String ping() {
        registry.counter("pingCount").inc();
        return "Enjoy Java EE 8 with MicroProfile ThinWARs!";
    }
}    

curl http://localhost:9080/metrics/application yields:

# TYPE application:ping_count counter
application:ping_count 1    
    
and curl -H"Accept: application/json" http://localhost:9080/metrics/application returns

{"pingCount":1}    
    

The size of the WAR is 4kB. Initial build time: 3292 ms, subsequent build times: < 3s. Deploy time: 0.233 seconds.

Built and deployed with WAD and tested with openliberty (the largest possible installation with all Java EE 8 + MicroProfile features enabled).

See you at Web, MicroProfile and Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.