2017-09-09 7 views
1

私はAkka Streamsアプリケーションとそれを正常に動作させました。メッセージがAkka Streamsフローまたはシンクに到着する速度を測定します。

私がしたいことは、JMXコンソールをAkka Streamsアプリケーションを実行しているJVM intanceに接続して、シンクとフローに入ってくるメッセージの量を調べることです。

これは可能ですか?私はグーグルではありますが、具体的な方法は見つけられませんでした。

私のアプリケーションの最終段階は、カサンドラデータベースへのシンクです。シンクに入る1秒あたりのメッセージの割合を知りたい。

また、グラフ内でランダムなフローを選択して、フローを流れる1秒あたりのメッセージ数を知りたいとします。

箱はありますか?または私はレートを測定するために私のフローのそれぞれにdropwizardのようなものをコード化するべきですか?

答えて

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で見つけることができるデモの一部です。 このようなアドホックなソリューションは、シンプルさを維持しながら、アプリケーションに完全に合わせるという利点があります。

関連する問題