Multitenancy - parallel processing


We’ve multiple projections (subscribing to subset of streams types), and each is handling let’s say events from different subdomain. We’re using catchup subscriptions.

Additionally, we’ve multiple tenants (every tenant’s data is independent from the others). The number of tenants is fastly growing.
For simplification - we’ve just one instance of Event Store.

We’d like to be able to process events for each tenant independently - in parallel. How this can be achieved ?
We do not want to have subscription per tenant, as it will grow really fast (number of tenants X number of subdomains).

The thing we’re worried about is that increased traffic on one tenant can impact other tenants.

Do you have any suggestions how can we approach the issue?

Can you calrify a bit what you mean by

  • subdomain
  • Tenant
  • Fast Growing

the difference between subdomain & tenant in your context
the current design you have


The latest version of Eventuous offers partition processing on a subscription.
We are using to concurrently process Products in parallel, but I suspect it would work well for tenants as well.

Just fyi, we run our multi tenant from a persistent subscription, simply for maintenance reasons. If we needed to rebuild Tenant #1 read model, it means we cna simply replay that [persistent subscription (rather than using $all)

1 Like