Причина того, что он не детерминирован c, состоит в том, что два источника производят элементы с разной скоростью. Самый простой способ сделать его более детерминированным c - использовать EventTime. Это означает, что вам потребуется назначить временные метки как для контрольных записей, так и для записей данных. Затем Flink будет генерировать водяные знаки для ваших элементов.
Затем вы можете просто буферизовать и подождать с испусканием или отбрасыванием элементов, пока вы не получите водяной знак для потока управления, что означает, что в потоке управления ничего не изменится.
Без временных меток практически невозможно ввести детерминированное c поведение в таком случае, потому что вы никогда не сможете точно сказать, когда данная запись прибыла и какие записи следует удалить, а какие следует испущен.