public async Task DispatchAllAsync(CancellationToken cancellationToken = default)
        {
            // Ez a metódus a bg service által kerül meghívásra, tenant nem elérhető
            // => Dispatchelünk minden tenant outboxából
            var tenants = await masterDbContext.Tenants.ToListAsync(cancellationToken);

            foreach (var tenant in tenants)
            {
                await using var context = tenantOutboxDbContextFactory.CreateContext(tenant);
                var dispatcher = new EfCoreMessageDispatcher <TContext>(
                    context,
                    serviceProvider.GetRequiredService <IOptions <OutboxConfiguration> >(),
                    serviceProvider.GetRequiredService <IPublishEndpoint>(),
                    serviceProvider.GetRequiredService <ILogger <EfCoreMessageDispatcher <TContext> > >());

                await dispatcher.DispatchAllAsync(cancellationToken);
            }
        }
        public async Task TryDispatchMessagesAsync(IEnumerable <Guid> messageIds,
                                                   CancellationToken cancellationToken = default)
        {
            // Ez a metódus a middleware vagy a MT filter által kerül meghívásra, nem biztos, hogy van tenantunk
            // => Ha van, akkor dispatcheljük az adott azonosítójú üzeneteket a tenantból
            // => Ha nincs akkor kivárjuk hogy a background job mindent dispatcheljen
            var tenant = serviceProvider.GetService <Tenant>();

            if (tenant != null)
            {
                await using var context = tenantOutboxDbContextFactory.CreateContext(tenant);

                var dispatcher = new EfCoreMessageDispatcher <TContext>(
                    context,
                    serviceProvider.GetRequiredService <IOptions <OutboxConfiguration> >(),
                    serviceProvider.GetRequiredService <IPublishEndpoint>(),
                    serviceProvider.GetRequiredService <ILogger <EfCoreMessageDispatcher <TContext> > >());

                await dispatcher.TryDispatchMessagesAsync(messageIds, cancellationToken);
            }
        }