24 lines
964 B
C#
24 lines
964 B
C#
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Options;
|
|
using RabbitMQ.Client;
|
|
|
|
namespace FictionArchive.Service.Shared.Services.EventBus.Implementations;
|
|
|
|
public static class RabbitMQExtensions
|
|
{
|
|
public static EventBusBuilder<RabbitMQEventBus> AddRabbitMQ(this IServiceCollection services, Action<RabbitMQOptions> configure)
|
|
{
|
|
services.Configure(configure);
|
|
services.AddSingleton<IConnectionFactory, ConnectionFactory>(provider =>
|
|
{
|
|
var options = provider.GetService<IOptions<RabbitMQOptions>>();
|
|
ConnectionFactory factory = new ConnectionFactory();
|
|
factory.Uri = new Uri(options.Value.ConnectionString);
|
|
return factory;
|
|
});
|
|
services.AddSingleton<RabbitMQConnectionProvider>();
|
|
services.AddHostedService<RabbitMQEventBus>();
|
|
return services.AddEventBus<RabbitMQEventBus>();
|
|
}
|
|
} |