跳到主要内容
版本:Next
session_windowINPUTBUFFERPROCESSOROUTPUT

会话窗口(Session Window)

会话窗口(Session Window)缓冲按活动间隙把消息(Message)划分成会话。新消息会延长当前会话;若在配置的 gap 时长内没有消息到达,该会话即关闭,其累积的全部消息会作为一个批次(Batch)发出。旧式 join 选项仍然存在,但流编译器会拒绝声明了它的窗口缓冲(见下方警告)。

配置​

FieldTypeRequiredDefault描述
typestringyes—session_window
gapdurationyes—会话内消息之间的最大空闲时间。当 gap 时长耗尽且没有新消息时,会话被刷新。示例:1ms、1s、1m、1h。
joinobjectno—旧式 SQL 连接配置;会被流编译器拒绝(见下方警告)。
旧式 join —— 被流编译器拒绝

在 session_window 缓冲上声明 join 会在编译时报错 legacy window buffers with 'join' cannot compile。Stream 配置不支持流-流 连接;请改用 SQL 处理器针对临时表的逐批次连接。

join​

FieldTypeRequiredDefault描述
querystringyes—对来自不同输入源的批次数据执行连接的 SQL 查询。
value_fieldstringno—保存消息载荷的二进制字段的名称。默认为引擎默认的二进制值字段。
codecobjectyes—在连接前用于解码消息批次的编解码器(Codec)。
thread_numintegerno—连接期间用于并行解码的工作线程数。

codec 字段是一个 CodecConfig 对象:一个选择编解码器的 type 字符串,外加编解码器专属的其他字段。

示例​

基本配置​

buffer:
type: "session_window"
gap: "5s"

带 Join 配置​

buffer:
type: "session_window"
gap: "10s"
join:
query: "SELECT a.user_id, a.event_type, b.metadata FROM events a JOIN metadata b ON a.user_id = b.user_id"
codec:
type: "json"