Пример #1
0
        public static async Task ExecuteInNServiceBusScope(Func <IServiceScope, IBus, Task> action)
        {
            var nServiceBusScope = TestServiceProvider.GetNServiceBusServiceProvider(
                NServiceBusOverrideConfig.GetNServiceBusAdditionalOverrideConfig())
                                   .CreateScope();

            var inputQueue  = nServiceBusScope.ServiceProvider.GetService <IConfiguration>().GetRabbitMqInputQueue();
            var outputQueue = nServiceBusScope.ServiceProvider.GetService <IConfiguration>().GetRabbitMqOutputQueue();

            var rebusIntegrationAdditionalConfig = new Dictionary <string, string>
            {
                ["rabbitMq:inputQueue"]  = outputQueue,
                ["rabbitMq:outputQueue"] = inputQueue
            };

            var rebusScope = TestServiceProvider.GetMessageHandlerServiceProvider(rebusIntegrationAdditionalConfig).CreateScope();
            var rebusBus   = rebusScope.ServiceProvider.GetService <IBus>();

            try
            {
                await action.Invoke(nServiceBusScope, rebusBus);
            }
            finally
            {
                nServiceBusScope.ServiceProvider.GetService <IRabbitMqUtility>().DeleteInputQueue();
                rebusScope.ServiceProvider.GetService <IRabbitMqUtility>().DeleteInputQueue();
            }
        }