private AsyncLifetimeManager BuildLifetimeManager()
        {
            async Task InitializeAsync(CancellationToken cancellation)
            {
                var messageHandlerProvider = _localMessageDispatcher.MessageHandlerProvider;
                var routeRegistrations     = GetRouteRegistrations(messageHandlerProvider);
                var registrationOperations = routeRegistrations.Select(p => _messageRouter.RegisterRouteAsync(p, cancellation: default));
                await Task.WhenAll(registrationOperations);
            }

            async Task DisposeAsync()
            {
                try
                {
                    await _messageRouter.UnregisterRoutesAsync(removePersistentRoutes : false);
                }
                finally
                {
                    _messageRouter.Dispose();
                }
            }

            return(new AsyncLifetimeManager(InitializeAsync, DisposeAsync));
        }