Guidance: subscribe to all vs projection (built in)


Using stream per aggregate (AggName-Guid)

C# client, connecting via TCP

I’m currently subscribing to the $ce-AggName stream. (SubscribeToStreamAsync)

This works well (seems to work well).

I’ve noticed many times suggestions to just subscribe to all and simply ignore events I have no handlers for.

It seems like having everything subscribe to all would lead to performance issues (network?)

I also like the fact that I can trap unknown events… this indicates that my consumers are out of date.

Are the suggestions to subscribe to all, for demo or proof of concept, or is it general guidance for production systems?

FYI: Subscribing to categories limits you to 2bn events.
Reading and just not processing what you need (ideally you can determine this via the event name) is pretty fast, I’m not sure about network load but setting up a small demo with multiple subscriptions should be easy enough.
Just beware that what is going to be most limiting is how well you process it in parallel - bad multithreading etc. can have a major impact.

On a local machine with a somewhat heavy parallelisation for multiple projections on top, I’m able to easily read and “process” 30-50k events per second on a single projection.
YMMV when it comes to network, so I’m letting others speak for that.

How many events/second are you dealing with?

For many systems they just don't care about the network-stupid part :slight_smile:

Low msg/sec right now.

This was more about making sure my understanding and assumptions were correct.

The whole idea is its basically network-stupid complexity-smart.

Up to a fairly large number of events not filtering reduces complexity
at the cost of network overhead.