我已经编写了一个Akka Streams应用程序,它的工作正常。
我想要做的是将我的JMX控制台连接到运行Akka Streams应用程序的JVM,然后研究进入我的接收器和流程的消息量。
这可能吗?我用Google搜索,但没有找到具体的方法。
我的应用程序的最后阶段是Cassandra数据库的接收器。我想知道每秒进入Sink的消息率。
我还想在我的图表中选择一个随机流,然后知道流经流量的每秒消息数。
有没有开箱即用的东西?或者我应该只在我的每个流程中编写类似dropwizard的代码来测量速率。
答案 0 :(得分:2)
目前,您无法利用“开箱即用”来监控Akka Stream内的费率。
但是,这是一个非常简单的工具,您可以在监控Flow
中提取,您可以将其放置在符合您需求的任何地方。
以下示例基于Kamon,但您可以看到它可以非常轻松地移植到Dropwizard:
def meter[T](name: String): Flow[T, T, NotUsed] = {
val msgCounter = Kamon.metrics.counter(name)
Flow[T].map { x =>
msgCounter.increment()
x
}
}
mySource
.via(meter("source"))
.via(myFlow)
.via(meter("sink"))
.runWith(mySink)
以上是您可以在this repo找到的演示的一部分。 像这样的临时解决方案具有为您的应用量身定制的优势,同时保持简洁性。