![](/img/trans.png)
[英]Akka: - why is it that messages are not guaranteed to arrive (after being send)? What is the failure rate for messages?
[英]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.