Ejemplo n.º 1
0
        /// <summary>
        /// Applies configurations on connector
        /// </summary>
        private void ConfigureConnector(HmqStickyConnector connector)
        {
            connector.Observer.Configurator          = _configurator;
            connector.AutoSubscribe                  = _autoSubscribe;
            connector.DisconnectionOnAutoJoinFailure = _disconnectOnSubscribeFailure;
            if (_contentSerializer != null)
            {
                connector.ContentSerializer = _contentSerializer;
            }

            foreach (string host in _hosts)
            {
                connector.AddHost(host);
            }

            if (_connected != null)
            {
                connector.Connected += new ConnectionEventMapper(connector, _connected).Action;
            }

            if (_disconnected != null)
            {
                connector.Disconnected += new ConnectionEventMapper(connector, _disconnected).Action;
            }

            if (_error != null)
            {
                connector.ExceptionThrown += new ExceptionEventMapper(connector, _error).Action;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Uses horse bus and connects to the server
        /// </summary>
        public static IServiceProvider UseHorseBus <TIdentifier>(this IServiceProvider provider)
        {
            MicrosoftDependencyConsumerFactory.Provider = provider;
            HmqStickyConnector <TIdentifier> connector = provider.GetService <HmqStickyConnector <TIdentifier> >();

            connector.Run();
            return(provider);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Releases all resources
 /// </summary>
 internal void Dispose()
 {
     _connector    = null;
     _connected    = null;
     _disconnected = null;
     _error        = null;
     _enhance      = null;
     _hosts.Clear();
     _assembyConsumers.Clear();
     _individualConsumers.Clear();
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Registers all consumers.
        /// This method is called if implementation is done without ioc container.
        /// </summary>
        private void RegisterConsumers(HmqStickyConnector connector)
        {
            foreach (Tuple <ServiceLifetime, Type> pair in _assembyConsumers)
            {
                connector.Observer.RegisterAssemblyConsumers(pair.Item2);
            }

            foreach (Tuple <ServiceLifetime, Type> pair in _individualConsumers)
            {
                connector.Observer.RegisterConsumer(pair.Item2);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Builds new HmqStickyConnector with defined properties
        /// </summary>
        public HmqStickyConnector <TIdentifier> Build <TIdentifier>()
        {
            if (_connector != null)
            {
                return((HmqStickyConnector <TIdentifier>)_connector);
            }

            _connector = new HmqStickyConnector <TIdentifier>(_reconnectInterval, new ConnectorInstanceCreator(_id, _name, _type, _token, _enhance).CreateInstance);
            ConfigureConnector(_connector);

            return((HmqStickyConnector <TIdentifier>)_connector);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Builds new HmqStickyConnector with defined properties.
        /// </summary>
        public HmqStickyConnector Build()
        {
            if (_connector != null)
            {
                return(_connector);
            }

            _connector = new HmqStickyConnector(_reconnectInterval, new ConnectorInstanceCreator(_id, _name, _type, _token, _enhance).CreateInstance);
            ConfigureConnector(_connector);
            if (_serviceContainer == null)
            {
                RegisterConsumers(_connector);
            }

            return(_connector);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Adds Horse connector with configuration
        /// </summary>
        public static IServiceCollection AddHorseBus(this IServiceCollection services, Action <HorseConnectorBuilder> config)
        {
            HorseConnectorBuilder builder = new HorseConnectorBuilder(services);

            config(builder);

            HmqStickyConnector connector = builder.Build();

            AddConsumersMicrosoftDI(services, connector, builder);
            services.AddSingleton(connector);
            services.AddSingleton(connector.Bus);
            services.AddSingleton(connector.Bus.Direct);
            services.AddSingleton(connector.Bus.Queue);
            services.AddSingleton(connector.Bus.Route);

            return(services);
        }
Ejemplo n.º 8
0
        private static void AddConsumersMicrosoftDI(IServiceCollection services, HmqStickyConnector connector, HorseConnectorBuilder builder)
        {
            foreach (Tuple <ServiceLifetime, Type> pair in builder.AssembyConsumers)
            {
                IEnumerable <Type> types = connector.Observer
                                           .RegisterAssemblyConsumers(() => new MicrosoftDependencyConsumerFactory(pair.Item1),
                                                                      pair.Item2);

                foreach (Type type in types)
                {
                    AddConsumerIntoCollection(services, pair.Item1, type);
                }
            }

            foreach (Tuple <ServiceLifetime, Type> pair in builder.IndividualConsumers)
            {
                connector.Observer.RegisterConsumer(pair.Item2, () => new MicrosoftDependencyConsumerFactory(pair.Item1));
                AddConsumerIntoCollection(services, pair.Item1, pair.Item2);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Adds Horse connector with configuration
        /// </summary>
        public static IServiceCollection AddHorseBus <TIdentifier>(this IServiceCollection services, Action <HorseConnectorBuilder> config)
        {
            HorseConnectorBuilder builder = new HorseConnectorBuilder(services);

            config(builder);

            HmqStickyConnector <TIdentifier> connector = builder.Build <TIdentifier>();

            AddConsumersMicrosoftDI(services, connector, builder);
            services.AddSingleton(connector);

            HorseBus <TIdentifier> bus = (HorseBus <TIdentifier>)connector.Bus;

            services.AddSingleton <IHorseBus <TIdentifier> >(bus);
            services.AddSingleton <IHorseDirectBus <TIdentifier> >((HorseDirectBus <TIdentifier>)bus.Direct);
            services.AddSingleton <IHorseQueueBus <TIdentifier> >((HorseQueueBus <TIdentifier>)bus.Queue);
            services.AddSingleton <IHorseRouteBus <TIdentifier> >((HorseRouteBus <TIdentifier>)bus.Route);

            return(services);
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Creates new connection event wrapper
 /// </summary>
 public ExceptionEventMapper(HmqStickyConnector connector, Action <Exception> action)
 {
     _connector = connector;
     _action    = action;
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Creates new connection event wrapper
 /// </summary>
 public ConnectionEventMapper(HmqStickyConnector connector, Action <HmqStickyConnector> action)
 {
     _connector = connector;
     _action    = action;
 }