Wie versenden Sie Daten von Kafka-streams an die clients über Websockets in PlayFramework?
Ich bin mit dem Playframework zusammen mit Scala. Ich bin versucht zu verarbeiten von Daten von Kafka, die Daten zu verarbeiten, und drücken Sie dann die Daten per websockets an den client. Leider bin ich noch relativ ein Neuling mit dieser Technik.
Wenn über die Dokumentation, die Sie erwähnt, um zu erstellen ein Schauspieler, wenn Sie erstellen möchten websockets. Code ist unten auf der website. web-socket
import play.api.libs.json.JsValue
import play.api.mvc._
import play.api.libs.streams._
class Controller4 @Inject() (implicit system: ActorSystem, materializer: Materializer) {
import akka.actor._
class MyWebSocketActor(out: ActorRef) extends Actor {
import play.api.libs.json.JsValue
def receive = {
case msg: JsValue =>
out ! msg
}
//do i include my kafka consumer here???
}
object MyWebSocketActor {
def props(out: ActorRef) = Props(new MyWebSocketActor(out))
}
def socket = WebSocket.accept[JsValue, JsValue] { request =>
ActorFlow.actorRef(out => MyWebSocketActor.props(out))
}
}
Meine Frage ist, wo setze ich die Kafka-consumer-code. Lege ich es in den Schauspieler? Ist dies beste Praxis? Der Grund warum ich bin besorgt über die Umsetzung der kafka-Verbraucher ist es so, dass es blockiert werden.
Vielen Dank im Voraus für Eure Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Akka Streams + Reaktive Kafka eigentlich macht das ziemlich einfach. Nur Draht einer Kafka-Quelle, um die WebSocket-Quelle zu senden Kafka-Nachrichten an einen client per WebSocket. Hier ist eine vollständige demo mit dem code:
https://www.jamesward.com/2016/05/25/combining-reactive-streams-heroku-kafka-and-play-framework/