|
Akka/Scala example source code file (MetricsListener.scala)
The MetricsListener.scala Akka example source codepackage sample.cluster.factorial import akka.actor.ActorLogging import akka.actor.Actor //#metrics-listener import akka.cluster.Cluster import akka.cluster.ClusterEvent.ClusterMetricsChanged import akka.cluster.ClusterEvent.CurrentClusterState import akka.cluster.NodeMetrics import akka.cluster.StandardMetrics.HeapMemory import akka.cluster.StandardMetrics.Cpu class MetricsListener extends Actor with ActorLogging { val selfAddress = Cluster(context.system).selfAddress // subscribe to ClusterMetricsChanged // re-subscribe when restart override def preStart(): Unit = Cluster(context.system).subscribe(self, classOf[ClusterMetricsChanged]) override def postStop(): Unit = Cluster(context.system).unsubscribe(self) def receive = { case ClusterMetricsChanged(clusterMetrics) => clusterMetrics.filter(_.address == selfAddress) foreach { nodeMetrics => logHeap(nodeMetrics) logCpu(nodeMetrics) } case state: CurrentClusterState => // ignore } def logHeap(nodeMetrics: NodeMetrics): Unit = nodeMetrics match { case HeapMemory(address, timestamp, used, committed, max) => log.info("Used heap: {} MB", used.doubleValue / 1024 / 1024) case _ => // no heap info } def logCpu(nodeMetrics: NodeMetrics): Unit = nodeMetrics match { case Cpu(address, timestamp, Some(systemLoadAverage), cpuCombined, processors) => log.info("Load: {} ({} processors)", systemLoadAverage, processors) case _ => // no cpu info } } //#metrics-listener Other Akka source code examplesHere is a short list of links related to this Akka MetricsListener.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.