fromCategory().foreachStream understanding

Could someone verify this for me please:

If we have a projection which does this:


Will the projection process events back in the eventdatetime concurrently?

tenant 1 first event was 1st January 2020
tenant 2 first event was 1st January 2020
tenant 3 first event was 1st August 2020

Would all 3 partition states be created immediately, or would we have to wait until all the events were caught up to 1st August until we started seeing tenant 3?

My understanding was using fromCategory(‘Tenant’) on it’s own would give us that, but 1 event at a time, and the foreach gives us the ability to concurrent process streams (in this case 3) but are they still ordered by the date across the whole category?

Put simpler (hopefullly)
Does foreachStream work concurrently on streams from the category?

I have been working on the assumption it is concurrent for a long time now, mainly based off @Greg_Young1’s comment:

In general when querying with projections you want many streams and a stream per result as you can use .foreachStream on those queries which will automatically parallelize them