#10008 adds inbox & outbox patterns to the distributed event bus. However, it doesn't support multi-tenancy with a tenant has a dedicated database. We don't support it since it is not feasible. To make inbox/outbox consistent, we should save the message within the same database that is related to the event publishing/handling logic. The essential problem is in the background thread that publishes/processes outbox/inbox events. If we have thousands of databases, it would be a real problem to read events from these databases and publish/process. Also, we should dynamically re-arrange background worker threads for new created or deleted tenants.
That's really complicated. For a reference, the CAP library doesn't support this scenario (dotnetcore/CAP#699). It also doesn't support multiple db scenario (dotnetcore/CAP#998), but ABP supports it currently, so it works good for a modular system where each module has its own db.
I am opening a backlog item. I could not find a system that scales for multi-db multi-tenant scenario, but we may implement a limited solution where it works with low number of different tenant database but can't work as performant with high number of databases ( I don't know how many is low and high yet :) ).
#10008 adds inbox & outbox patterns to the distributed event bus. However, it doesn't support multi-tenancy with a tenant has a dedicated database. We don't support it since it is not feasible. To make inbox/outbox consistent, we should save the message within the same database that is related to the event publishing/handling logic. The essential problem is in the background thread that publishes/processes outbox/inbox events. If we have thousands of databases, it would be a real problem to read events from these databases and publish/process. Also, we should dynamically re-arrange background worker threads for new created or deleted tenants.
That's really complicated. For a reference, the CAP library doesn't support this scenario (dotnetcore/CAP#699). It also doesn't support multiple db scenario (dotnetcore/CAP#998), but ABP supports it currently, so it works good for a modular system where each module has its own db.
I am opening a backlog item. I could not find a system that scales for multi-db multi-tenant scenario, but we may implement a limited solution where it works with low number of different tenant database but can't work as performant with high number of databases ( I don't know how many is low and high yet :) ).