累积在一个入口上的扇入运算符

Fan-in operator that accumulates on one inlet

我想要一个带有两个入口的 akka-stream 运算符。在一个入口上,它接收有关消息的元数据。在第二个入口上,消息本身。

问题是,虽然一次接收一条消息的元数据,但消息是成批分组的。

我想要一个在第一个端口上累积所有元数据的运算符,这样当消息批次进入第二个端口时,运算符发出两个批次(可能是压缩的)。

显而易见的解决方案是仅使用 Zip 并将元数据分组到上游。但问题是批次的大小是未知的。

谢谢@LevyRamsey,我做到了。

Combine the elements of 2 streams into a stream of tuples. The elements coming from the left port will accumulate until an element on the right port is available.

A ZipAccumulateLeft has a left and a right input port and one out port

'''Emits when''' all of the inputs have an element available

'''Backpressures when''' downstream backpressures

'''Completes when''' any upstream completes

'''Cancels when''' downstream cancels

https://gist.github.com/gurghet/31cd99a8441ba5fdd380fa7d95bdb628