"The easiest" is somewhat subjective, but you might consider Play's experimental reactive streams support as described here.
Include the Reactive Streams integration library into your project.
libraryDependencies += "com.typesafe.play" %% "play-streams-experimental" % "2.4.4"
All access to the module is through the Streams object.
Here is an example that adapts a Future into a single-element Publisher.
val fut: Future[Int] = Future { ... }
val pubr: Publisher[Int] = Streams.futureToPublisher(fut)
See the Streams object’s API documentation for more information.