public RabbitMessageQueue(IConnectionFactory connectionFactory, RabbitMessageQueueOptions?options = null, ILogger <RabbitMessageQueue>?logger = null) { _connectionFactory = connectionFactory; _logger = logger; _options = options ?? new RabbitMessageQueueOptions(); _subscriptionManager = new MessageSubscriptionManager(null, _options.Exchange.Name); }
public RabbitMessageQueue(IConnectionFactory connectionFactory, MessageSubscriptionManager subscriptionManager, RabbitMessageQueueOptions?options = null, ILogger <RabbitMessageQueue>?logger = null) { _connectionFactory = connectionFactory; _logger = logger; _options = options ?? new RabbitMessageQueueOptions(); _subscriptionManager = subscriptionManager; }
internal void AddSubscriptionManager(IServiceCollection services) { services.TryAddSingleton(provider => CreateOptions()); services.TryAddSingleton(provider => { var options = provider.GetRequiredService <RabbitMessageQueueOptions>(); var subscriptionManager = new MessageSubscriptionManager(provider, options.Exchange.Name, provider.GetService <ILogger <MessageSubscriptionManager> >()); _configureSubscription?.Invoke(subscriptionManager); return(subscriptionManager); }); }
public static IServiceCollection AddInternalMessageQueue(this IServiceCollection services, string exchange = "", Action <IMessageSubscriptionManager>?config = null) { services.TryAddSingleton <MessageSubscriptionManager>(provider => { var subscriptionManager = new MessageSubscriptionManager(provider, exchange, provider.GetService <ILogger <MessageSubscriptionManager> >()); config?.Invoke(subscriptionManager); return(subscriptionManager); }); services.AddSingleton <IMessageQueue>(provider => { var subscriptionManager = provider.GetRequiredService <MessageSubscriptionManager>(); return(new InternalMessageQueue(subscriptionManager)); }); return(services); }
public SubscribeMessageCommandHandler(DbContextAccesor dbContextAccessor, MessageSubscriptionManager subscriptionManager) : base(dbContextAccessor) { this.subscriptionManager = subscriptionManager; }