测量消息到达Akka流或接收器的速率

测量消息到达Akka流或接收器的速率,akka,akka-stream,Akka,Akka Stream,我已经写了一个Akka Streams应用程序,它运行良好 我想做的是将我的JMX控制台连接到运行Akka Streams应用程序的JVM intance,然后研究进入我的接收器和流的消息量 这可能吗?我在谷歌上搜索了一下,但没有找到具体的方法 我的应用程序的最后一个阶段是Cassandra数据库的接收器。我想知道每秒进入接收器的消息的速率 我还想在我的图表中选择一个随机流,然后知道每秒流经该流的消息数 盒子里有东西吗?或者我应该在我的每个流中编写类似dropwizard的代码来测量速率。目前没

我已经写了一个Akka Streams应用程序,它运行良好

我想做的是将我的JMX控制台连接到运行Akka Streams应用程序的JVM intance,然后研究进入我的接收器和流的消息量

这可能吗?我在谷歌上搜索了一下,但没有找到具体的方法

我的应用程序的最后一个阶段是Cassandra数据库的接收器。我想知道每秒进入接收器的消息的速率

我还想在我的图表中选择一个随机流,然后知道每秒流经该流的消息数


盒子里有东西吗?或者我应该在我的每个流中编写类似dropwizard的代码来测量速率。

目前没有任何“现成”的东西可以用来监控Akka流中的速率

然而,这是一个非常简单的工具,您可以在监控
流中提取它,您可以将它放在任何适合您需要的地方

下面的示例基于,但您可以看到它可以很容易地移植到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)
以上是您可以在上找到的演示的一部分。 像这样的特别解决方案的优点是可以为您的应用程序完美定制,同时保持简单性