【问题标题】:How to consume from a local socket in flink that has "/*"after port number where * is the rest of the source?如何从 flink 中的本地套接字消费,端口号后面有“/*”,其中 * 是源的其余部分?
【发布时间】:2024-05-18 14:45:01
【问题描述】:

我是 apache-flink 的新手,我需要处理一些来自 akka local scoket 的数据,这些数据正在流式传输到 'ws://localhost:9000/ws'

在 flink API 中,我只能找到一个名为 'socketTextStream' 的函数 接受主机名、端口和分隔符

例如:

DataStream<String> text = env.socketTextStream(hostname, port, "\n");

如何将套接字指定为 'ws://localhost:9000/ws' ?

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    问题在于socketTextStream 在内部使用常规套接字,即java.net.Socket 用于与指定地址的连接。但是从您描述中的地址假设,您正在处理 WebSockets。您不能使用常规套接字从 WebSocket 读取数据。目前,Flink 没有从 WebSockets AFAIK 创建数据流的 API。获得您想要获得的唯一内容是编写您自己的SourceFunction,它将在内部使用javax.websocket-api 来创建连接并从您的服务器读取数据。

    【讨论】:

      最近更新 更多