Slide 46
Slide 46 text
Kafka Streams app to aggregate metrics
KTable metricsStream = builder.table(appIdSerde, metricSerde, "metrics", "raw-metrics");
KStream metricValueStream = metricsStream
.groupBy((key, value) -> new KeyValue<>(value.getName(), value), metricNameSerde, metricSerde)
.reduce(CounterMetric::add, CounterMetric::subtract, "aggregates")
.toStream()
.to(metricNameSerde, metricSerde, "metrics-agg");
// --- Second topology
GraphiteReporter graphite = GraphiteReporter.builder()
.hostname("localhost")
.port(2003)
.build();
KStream aggMetricsStream = builder.stream(metricNameSerde, metricSerde, "metrics-agg");
aggMetricsStream.foreach((key, metric) -> graphite.send(metric));