Correct Apache beam windowing strategy for joining two streams of data

This join will be best implemented in the global window using state to buffer the two sides of the join and timers to clean up the state. It can be generalized, so it is tracked as a feature request in https://issues.apache.org/jira/browse/BEAM-7386. There is an implementation under review/development at https://github.com/apache/beam/pull/15275. You may be able to use the details on the bug and that pull request to complete an implementation that is simplified and customized for you.