Java 抑制join(KStream,KStream)的输出,直到超出JoinWindow

Java 抑制join(KStream,KStream)的输出,直到超出JoinWindow,java,cassandra,apache-kafka-streams,Java,Cassandra,Apache Kafka Streams,我正在使用KStreamsAPI for java。我正在尝试将搜索查询与结果集上的结果单击连接起来。一个查询可以导致0到n次单击。单击和查询分别记录在一个主题中,可以通过请求id进行连接。当我连接它们时,连接的对首先在包含单击信息的部分中为空。(很明显,因为点击需要时间)。我将这些记录输出到cassandra,以便在之后对它们进行聚合(我知道我不是个好孩子)。无论如何,我不希望每次查询都先有一个“空连接”,我只希望在超出JoinWindow后得到结果。那么,有没有办法在窗口结束之前抑制连接的输

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

这是连接的(Kotlin)代码:

// Consuming the query log topic with message key = request_id
val queryLogs = streamBuilder.stream("query_logs",
            Consumed.with(stringSerdes, querySerdes))

// Consuming the click log topic with message key = request_id
val clickLogs = streamBuilder.stream("click_logs",
            Consumed.with(stringSerdes, clickSerdes))

// Joining the click and the query log on request id to get the information which queries resulted in which clicks
val outerJoin = queryLogs.outerJoin(clickLogs, QueryClickJoiner(),
            JoinWindows.of(Duration.ofMinutes(30)),
            Joined.with(stringSerdes, clickSerdes, querySerdes))
outerJoin.to("joined_clicks", Produced.with(stringSerdes,queryClickSerdes!!))
结果“查询点击”将有一个查询日志字段和一个结果点击列表。我只希望在连接窗口的30分钟结束后得到结果,而不是在单击与查询连接时的每次更新


亲切问候

请提供迄今为止您拥有的代码示例和输出,以便于帮助解决您似乎使用了左连接或外连接?为什么不使用内部连接?谢谢。我更新了帖子并添加了一些代码。我不使用内部联接,因为我还想捕获没有单击的查询。左连接是要使用的正确连接(就SQL连接而言),但在Kafka中,左连接有点不同。据我所知,他们需要在查询被记录之前点击一下(这显然不是我所需要的)。但也许我错了?不管怎样,它都不能通过不断的更新来解决这个问题。