void handleResponse(String metricsUri, ConsumerId consumer, String respons) {
        var metrics = processAndBuild(GenericJsonUtil.toMetricsPackets(respons),
                new ServiceIdDimensionProcessor(),
                new ClusterIdDimensionProcessor(),
                new PublicDimensionsProcessor());
        snapshotsRetrieved.incrementAndGet();
        log.log(FINE, () -> "Successfully retrieved " + metrics.size() + " metrics packets from " + metricsUri);
        snapshots.put(consumer, new Snapshot(Instant.now(clock), metrics));
    }
Retrieves metrics from a single Vespa node over http. To avoid unnecessary load on metrics
proxies, a cached snapshot per consumer is retained and served for a fixed TTL period.
Upon failure to retrieve metrics, an empty snapshot is cached.
<p>
This class assumes that the consumer id is a valid and existing one, which is already
ensured by the {@link ApplicationMetricsHandler}.

@author gjoranv
metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/NodeMetricsClient.java