繁体   English   中英

测量消息在“ Akka流”或“接收器”中到达的速率

[英]Measure the rate at which messages arrive in a Akka Streams Flow or a Sink

我已经编写了一个Akka Streams应用程序,并且可以正常工作。

我要做的是将JMX控制台附加到运行Akka Streams应用程序的JVM实例上,然后研究流入我的Sink和Flows的消息量。

这可能吗? 我用谷歌搜索,但没有找到具体的方法。

我的应用程序的最后阶段是Cassandra数据库的接收器。 我想知道每秒发送到接收器的邮件速率。

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

有没有开箱即用的东西? 还是我应该在每个流程中编写诸如dropwizard之类的代码来测量速率。

目前,您没有什么可以“开箱即用”来监控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)

上面是在此存储库中可以找到的演示的一部分。 这样的临时解决方案的优势是可以为您的应用程序量身定制,同时保持简单性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM