Есть так много разных вещей, которые вы можете сделать с помощью Akka Streams
Вот только один пример с использованием Producer
приемника, согласно документации https://doc.akka.io/docs/akka-stream-kafka/current/producer.html. Обязательно ознакомьтесь с passThrough
и некоторыми вещами, которые он может сделать:
implicit val system: ActorSystem = ActorSystem("my-system")
implicit val materializer: ActorMaterializer = ActorMaterializer()
implicit val executionContext: ExecutionContextExecutor = system.dispatcher
case class User(firstName:String, lastName:String)
object UserJsonSupport extends DefaultJsonProtocol with SprayJsonSupport {
implicit val PortofolioFormats = jsonFormat2(User)
}
import UserJsonSupport._
val config = system.settings.config.getConfig("akka.kafka.producer")
val producerSettings = ProducerSettings(config, new StringSerializer, new StringSerializer)
val route = withSizeLimit(96239727) {
post {
headerValueByName("Authorization") { auth =>
entity(as[User]) { user: User =>
Source.single(user)
.map(user => new ProducerRecord[String, String]("last_names_topic", user.lastName, user.firstName))
.runWith(Producer.plainSink(producerSettings))
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`,
"<h1>Say hello to akka-http</h1>"))
}
}
}
}