示例#1
0
 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);
 }
示例#2
0
 public RabbitMessageQueue(IConnectionFactory connectionFactory, MessageSubscriptionManager subscriptionManager, RabbitMessageQueueOptions?options = null, ILogger <RabbitMessageQueue>?logger = null)
 {
     _connectionFactory   = connectionFactory;
     _logger              = logger;
     _options             = options ?? new RabbitMessageQueueOptions();
     _subscriptionManager = subscriptionManager;
 }
示例#3
0
        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;
 }