public FailureInvoker(IServiceProvider serviceProvider , MessageContext context) { _serviceScope = serviceProvider.CreateScope(); _serviceProvider = _serviceScope.ServiceProvider; _failureOptions = _serviceProvider.GetRequiredService <FailureHandleOptions>(); Context = context; SetUpFailureContext(); }
public void AddServices(IServiceCollection serviceCollection) { var options = new FailureHandleOptions(); _configure(options); var provider = serviceCollection.BuildServiceProvider(); var rabbitOptions = provider.GetRequiredService <RabbitOptions>(); options.BuildWithDefaultSelfExchangeName(rabbitOptions.DefaultExchangeName, rabbitOptions.DefaultDeadLetterExchange); foreach (var item in options.DeadLetterInfos) { serviceCollection.AddScoped(item.CallbackType, item.CallbackType); } serviceCollection.AddSingleton(options); }