Я не думаю, что Thead.sleep - хорошая идея справиться с этой ситуацией.Как правило, мы не рекомендуем делать это в Scala и не хотим блокировать поток в любом случае.
Одним из предложений будет использование любых потоковых методов, таких как Akka.Stream, Monix.Observable.Есть некоторые плюсы и минусы между этими библиотеками, я не хочу тратить на это слишком много абзацев.Но они поддерживают обратное давление, чтобы контролировать скорость производства, когда потребитель медленнее, чем производитель.Например, в вашем случае ваш потребитель пишет базу данных, а ваш продюсер, возможно, читает некоторые файлы json и выполняет некоторые агрегации.
Следующий код иллюстрирует идею, и вам нужно будет изменить ее по мере необходимости:
val sourceJson = Source(dataStream.map(line => readJsonFromString(line)))
val sinkDB = Sink(Events.jm.writeValueAsString) // you will need to figure out how to generate the Sink
val flowThrottle = Flow[String]
.throttle(1, 1.second, 1, ThrottleMode.shaping)
val runnable = sourceJson.via[flowThrottle].toMat(sinkDB)(Keep.right)
val result = runnable.run()