Hi,

We are using push streams to process post-commit events. Those events
originate from different data sources. At the moment we are processing
those individually, but the overhead of having a transaction for each is
too much. Quite often those events come in bursts following an upstream
transaction/ change set.

The goal is to group events by data source and batch them, i.e. wait a bit
when an event arrives to see if others are also coming. If they keep
coming, keep collecting a bit longer, o/w move on.

I see that the PushStream has methods coalesce and window. Window seems a
bit more appropriate here, as it offers both duration and maxEvents. But it
seems to operate all the time, and not start a batch upon receiving an
event, which doesn't sound optimal in this case. More concerning to me is
the comment regarding back-pressure. We can't use back pressure (no control
on producer which is implemented via whiteboard. So here the maxEvents is
more a way to limit the batch and not to indicate need for back pressure.

Still, that doesn't address grouping. See that there is a fork, but that is
made to deal with a fixed number of child streams.

Would I just be best to use a window with just duration, collect a number
of events, then move on and use a regular stream to group them and if
necessary batch them in smaller groups?

Cheers,

Alain
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to