У меня есть приложение Akka Stream с одним потоком/графиком. Я хочу измерять скорость потока в источнике и регистрировать его каждые 5 секунд, например «полученные 3 сообщения за последние 5 секунд». Я пробовал с,Как регистрировать скорость потока в потоке Akka?
someOtherFlow
.groupedWithin(Integer.MAX_VALUE, 5 seconds)
.runForeach(seq =>
log.debug(s"received ${seq.length} messages in the last 5 seconds")
)
но он выводится только при наличии сообщений, без пустого списка при наличии 0 сообщений. Я тоже хочу 0. Это возможно?
Спасибо Стефано. Сложный код для такой простой задачи. У Kamon нет примеров онлайн (даже не блоги), где они измеряют скорость потоков akka и выводят ее. Я надеюсь, что есть что-то более простое. – Jasper
Для примера измерения скорости с Kamon ознакомьтесь с этой демонстрацией https://github.com/svezfaz/akka-backpressure-scala-central-talk/tree/master/demo. Вы просто увеличиваете счетчик Kamon для каждого элемента (см. Flows.scala), который течет, а затем вы используете агрегатор скорости на панели управления (см. Папку Grafana в демо). –
Я попробовал код сейчас, он (почти всегда) вернулся 0 за 5 секунд, он пропускает большинство сообщений. Кроме того, Kamon не является вариантом, потому что у меня нет панели управления, но просто хочу зарегистрировать ее. – Jasper