/// <summary> /// Add batch message handler. /// </summary> /// <typeparam name="TBatchMessageHandler">Batch message handler type.</typeparam> /// <param name="services">Service collection.</param> /// <param name="configuration">RabbitMq configuration section.</param> /// <returns>Service collection.</returns> public static IServiceCollection AddBatchMessageHandler <TBatchMessageHandler>(this IServiceCollection services, IConfiguration configuration) where TBatchMessageHandler : BaseBatchMessageHandler { CheckIfBatchMessageHandlerAlreadyConfigured <TBatchMessageHandler>(services); services.TryAddSingleton <IRabbitMqConnectionFactory, RabbitMqConnectionFactory>(); var configurationInstance = RabbitMqClientOptionsDependencyInjectionExtensions.GetRabbitMqClientOptionsInstance(configuration); services.ConfigureBatchConsumerConnectionOptions <TBatchMessageHandler>(configurationInstance); services.AddHostedService <TBatchMessageHandler>(); return(services); }
/// <summary> /// Add a transient fully-functional RabbitMQ client and required service infrastructure. /// </summary> /// <remarks> /// QueueService will be added in the transient mode. /// </remarks> /// <param name="services">Service collection.</param> /// <param name="configuration">RabbitMq configuration section.</param> /// <returns>Service collection.</returns> public static IServiceCollection AddRabbitMqClientTransient(this IServiceCollection services, IConfiguration configuration) { services.CheckIfQueueingServiceAlreadyConfigured <IQueueService>(); services.AddRabbitMqClientInfrastructure(); var configurationInstance = RabbitMqClientOptionsDependencyInjectionExtensions.GetRabbitMqClientOptionsInstance(configuration); var guid = Guid.NewGuid(); services.ConfigureRabbitMqConnectionOptions(guid, configurationInstance); services.ResolveTransientQueueService(guid); return(services); }