java—抑制join(kstream,kstream)的输出,直到超出joinwindow

pxy2qtax  于 2021-06-10  发布在  Cassandra
关注(0)|答案(0)|浏览(245)

我正在使用kstreamsapi for java。我正在尝试将搜索查询与结果集上的结果单击连接起来。一个查询可以导致0到n次单击。单击和查询分别记录在一个主题中,可以通过请求id进行连接。当我连接它们时,连接的对首先在包含单击信息的部分中为空(很明显,因为点击需要时间)。我将这些记录输出到cassandra,以便在之后对它们进行聚合(我知道我不是个好孩子)。不管怎样,我不希望每次查询都有一个“空连接”,我只希望在超过joinwindow之后得到结果。那么,有没有一种方法可以在窗口结束之前抑制join的输出呢?
这是连接的(kotlin)代码:

  1. // Consuming the query log topic with message key = request_id
  2. val queryLogs = streamBuilder.stream("query_logs",
  3. Consumed.with(stringSerdes, querySerdes))
  4. // Consuming the click log topic with message key = request_id
  5. val clickLogs = streamBuilder.stream("click_logs",
  6. Consumed.with(stringSerdes, clickSerdes))
  7. // Joining the click and the query log on request id to get the information which queries resulted in which clicks
  8. val outerJoin = queryLogs.outerJoin(clickLogs, QueryClickJoiner(),
  9. JoinWindows.of(Duration.ofMinutes(30)),
  10. Joined.with(stringSerdes, clickSerdes, querySerdes))
  11. outerJoin.to("joined_clicks", Produced.with(stringSerdes,queryClickSerdes!!))

结果“查询点击”将有一个查询日志字段和一个结果点击列表。我只希望在连接窗口的30分钟结束后得到结果,而不是每次单击与查询连接时的更新。
谨致问候

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题