2

我有一组要求如下:

  1. 消息'T'到达,必须等待5秒'A'中的相应消息到达(使用相同的密钥)。如果它在 5 秒内到达,则发送连接值并发送到下游。如果它没有在 5 秒内到达,则仅向下游发送“T”消息。
  2. 消息 'A' 到达,必须等待 5 秒才能使 'T' 中的相应消息到达(使用相同的密钥)。如果它在 5 秒内到达,则发送连接值并发送到下游。如果它没有在 5 秒内到达,则仅向下游发送“A”消息。

在此处输入图像描述

我目前的想法是做一个 KStream-KStream Sliding Window OUTER join。但是,在向下游发送 (T, null) 或 (null, T) 消息之前不会等待 5 秒(即立即完成)。

我需要等待超时发生,如果没有发生加入,则发送未加入的消息。

我附上了一张图表来帮助理解这些案例。我正在尝试尽可能多地使用 DSL。

任何帮助表示赞赏。

4

1 回答 1

2

好的,我找到了一个我仍在评估的相当老套的解决方案,但适用于这种情况。

我可以在最后简单地 groupByKey ,然后使用无界缓冲区抑制直到窗口到期。

于 2020-07-22T19:51:33.500 回答