背景
计划使用Flink建立一个数据管道。
流程看起来像这个
Kafka --> Flink Job --> gRPC endpoint
到目前为止的故事
- 阻塞实现已启动并正在运行。但这不会扩大高QPS
- 尝试在此处模拟异步行为
问题
- 对于异步行为,不确定行为将如何
- 如果使用
CompletableFuture
,则每条消息都将以Async
的方式进行处理,但在第一条消息的处理完成之前,是否会提取下一条消息进行处理?换句话说,有一种方法可以在任务管理器中实现异步处理。但是,任务管理器在获取下一条消息/元组时的行为是什么?是等待Async
进程完成,还是提交给CompletableFuture/Thread并获取下一条消息?不清楚 - 如果不是
shutdown
,使用自定义线程池会导致任何问题吗?因为管道将长时间运行 - 有其他解决方案可以在Flink接收器中实现异步行为吗
与尝试实现自定义异步接收器相比,我会利用Flink对异步运算符的支持,并拥有DiscardingSink
。
不,我看不出为什么有一个持久的线程池会导致问题。