2017-09-09 4 views
1

저는 Akka Streams 애플리케이션을 작성했으며 정상적으로 작동합니다.메시지가 Akka Streams Flow 또는 Sink에 도착하는 속도를 측정하십시오.

내가하고 싶은 일은 Akka Streams 애플리케이션을 실행하는 JVM intance에 JMX 콘솔을 연결하고 내 싱크 및 플로우로 들어오는 메시지의 양을 조사하는 것입니다.

이것이 가능합니까? 나는 봤지만 구체적인 방법을 찾지 못했습니다.

내 응용 프로그램의 마지막 단계는 카산드라 데이터베이스의 싱크대입니다. 싱크대로 들어오는 초당 메시지 비율을 알고 싶습니다.

또한 그래프에서 임의의 Flow를 선택하고 흐름을 통해 흐르는 초당 메시지 수를 알고 싶습니다.

상자는 없습니까? 또는 방금 속도를 측정하기 위해 각 플로우에 dropwizard와 같은 코드를 작성해야합니다.

답변

2

현재 Akka 스트림 내부의 속도를 모니터링하는 데 사용할 수있는 "out of the box"는 없습니다.

그러나 모니터링에 추출 할 수있는 매우 간단한 기능입니다. 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에서 찾을 수있는 데모의 일부입니다. 이와 같은 ad-hoc 솔루션은 단순성을 유지하면서 애플리케이션에 완벽하게 맞출 수있는 이점이 있습니다.

관련 문제