scala之您如何通过 Play Framework 中的 Websockets 将数据从 Kafka 流发送到客户端

shangdawei 阅读:135 2025-01-19 22:14:33 评论:0

我正在使用 Playframework 和 Scala。我正在尝试使用来自 Kafka 的数据,处理数据,然后通过 websockets 将数据推送到客户端。不幸的是,我仍然是这项技术的新手。

在查看文档时,他们提到在您想要创建 websocket 时创建一个 actor。下面的代码来自网站。 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)) 
  } 
} 

我的问题是,我将 Kafka 消费者代码放在哪里。我把它放在 Actor 里面吗?这是最佳做法吗?我担心将它放在 kafka 消费者那里的原因是它会阻止。

预先感谢您的帮助。

请您参考如下方法:

Akka Streams + Reactive Kafka实际上使这很容易。只需将 Kafka Source 连接到 WebSocket Source 即可通过 WebSocket 将 Kafka 消息发送到客户端。这是一个完整的演示代码:
https://www.jamesward.com/2016/05/25/combining-reactive-streams-heroku-kafka-and-play-framework/


标签:WEB
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号