public static SimpleEventBusMsDIBuilder AddRabbitMQ(this SimpleEventBusMsDIBuilder builder, EventReceivedFunc configEventReceived = null, Func <IServiceProvider, IEventSerializer <byte[]> > configSerializer = null, Func <ConnectionFactory> configConnectionFactory = null) { builder.Config(services => { if (configEventReceived != null) { services.TryAddSingleton(configEventReceived); } if (configSerializer != null) { services.TryAddSingleton(_ => configSerializer(_)); } if (configConnectionFactory != null) { services.TryAddSingleton(_ => configConnectionFactory()); } services.TryAddSingleton <IEventNameTypeResolver, DefaultEventNameTypeResolver>(); services.TryAddSingleton <IEventBus, RabbitMQEventBus>(); services.TryAddSingleton <IRabbitMQConnection, DefaultRabbitMQConnection>(); }); return(builder); }
public RabbitMQEventBus(IRabbitMQConnection persistentConnection, IServiceProvider serviceProvider, ILoggerFactory loggerFactory, ISubscriptionsManager subsManager, EventReceivedFunc eventReceiver, IEventSerializer <byte[]> eventSerializer, IEventNameTypeResolver eventNameTypeResolver) { _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection)); _logger = loggerFactory.CreateLogger <RabbitMQEventBus>(); _serviceProvider = serviceProvider; SubscriptionsManager = subsManager; _eventReceiver = eventReceiver; _eventSerializer = eventSerializer; _eventNameTypeResolver = eventNameTypeResolver; }