我们可以从上面的ResultHandler类的complete方法开始看 , 具体可以参见上面注释,总结起来就是如下几步
- 取消当前ResultHandler对象的超时定时任务
- 调用StreamRecordQueueEntry的complete方法将成员变量completedElements赋值
- 判断OrderedStreamElementQueue队列的队头元素StreamRecordQueueEntry的completedElements成员变量是不是不为空
- 第3步不为空,则调用OrderedStreamElementQueue队列的emitCompletedElement方法移除队列的头元素StreamElementQueueEntry并调用emitResult方法真正向下游吐出数据
5、flinksql自定义AsyncLookupFunction通常flinksql使用外部的数据源都需要引入一个flinksql-connector-xx这种jar包,比如我们想以kafka为流表join一个redis的维表,那么这时候查询redis的维表 , 通常使用的就是lookup join 。但是网上提供的例子基本都是同步的lookup join,在有些场景下为了提高吞吐就需要使用异步的lookup join 。详细实现可以直接看代码:https://gitee.com/rongdi/flinksql-connector-redis
推荐阅读
- VLQ & Base64 VLQ 编码方式的原理及代码实现
- Spring Boot 配置 jar 包外面的 Properties 配置文件
- 【C++】从零开始的CS:GO逆向分析3——写出一个透视
- ddr5比ddr4强多少_ddr5和ddr4的差距
- ba拼音读法 拔草的拼音
- 去土耳其别再买洛神诗rosense玫瑰水了 很多国人都只知道土耳其粉色瓶的rosense玫瑰水好用
- 3ce口红畅销的颜色排名 复古魅力,你值得拥有
- 投诉淘宝商家最管用的方法(淘宝商家最怕什么)
- iphone x怎么截屏(苹果x截屏的三种方法)
- 苹果的nfc功能怎么用(苹果9有nfc功能吗)