Esempio n. 1
0
        public NSBMessageBus(IMessageBusContainer container, IMessageBusConfiguration configuration)
        {
            NSBGlobalConfiguration.Config = configuration;

            _nsbConfiguration = new BusConfiguration();
            _nsbConfiguration.UseContainer <NSBContainer>(c => c.Configure(container, configuration));
            _nsbConfiguration.UseSerialization(typeof(NSBSerialiser));
            _nsbConfiguration.EndpointName(configuration.EndpointName);
            _nsbConfiguration.EnableInstallers();
            _nsbConfiguration.DisableFeature <AutoSubscribe>();
            _nsbConfiguration.UsePersistence <InMemoryPersistence>();
            //_nsbConfiguration.LoadMessageHandlers(configuration);
            _nsbConfiguration.CustomConfigurationSource(new NSBRouteConfiguration(configuration));
            _nsbConfiguration.RegisterComponents(c => c.ConfigureComponents(this, configuration));

            ConventionsBuilder builder = _nsbConfiguration.Conventions();

            builder.DefiningCommandsAs(t => configuration.MessageDefinitions.SingleOrDefault(md => md.MessageType == t && md.MessageAction == Core.MessageAction.Command) != null);
            builder.DefiningEventsAs(t => configuration.MessageDefinitions.SingleOrDefault(md => md.MessageType == t && md.MessageAction == Core.MessageAction.Event) != null);
            builder.DefiningMessagesAs(t => configuration.MessageDefinitions.SingleOrDefault(md => md.MessageType == t && md.MessageAction == Core.MessageAction.Message) != null);
            builder.DefiningExpressMessagesAs(t => configuration.MessageDefinitions.SingleOrDefault(md => md.MessageType == t && md.ExpressMe == true) != null);

            _factory = Bus.Create(_nsbConfiguration);
            _factory.Subscribe(configuration.MessageDefinitions);
        }
Esempio n. 2
0
        public AMQMessageBus(IMessageBusContainer container, IMessageBusConfiguration configuration)
        {
            _container     = container;
            _configuration = configuration;
            _serialiser    = container.ResolveType <IMessageBusSerialiser>();

            var hostName  = string.IsNullOrEmpty(configuration.HostName) ? _defaultHost : configuration.HostName;
            var brokerUri = string.Format(_brokerUriTemplate, hostName);

            _factory = new ConnectionFactory(brokerUri);

            _connection          = _factory.CreateConnection();
            _connection.ClientId = _configuration.EndpointName;
            _session             = _connection.CreateSession();
        }
Esempio n. 3
0
        public static void Configure(this ContainerCustomizations customizations, IMessageBusContainer container, IMessageBusConfiguration configuration)
        {
            customizations.Settings.Set("MessageBusContainer", container);
            customizations.Settings.Set("MessageBusConfiguration", configuration);

            var nativeContainer = container.NativeContainer;

            if (nativeContainer is IKernel)
            {
                customizations.Settings.Set("ExistingKernel", nativeContainer);
            }
            else if (nativeContainer is IUnityContainer)
            {
                customizations.Settings.Set("ExistingContainer", nativeContainer);
            }
        }
Esempio n. 4
0
        public RMQMessageBus(IMessageBusContainer container, IMessageBusConfiguration configuration)
        {
            _container     = container;
            _configuration = configuration;
            _serialiser    = container.ResolveType <IMessageBusSerialiser>();

            _factory = new ConnectionFactory()
            {
                HostName = string.IsNullOrEmpty(configuration.HostName) ? _defaultHost : configuration.HostName
            };

            _connection = _factory.CreateConnection();
            _channel    = _connection.CreateModel();

            foreach (var exchange in _configuration.MessageDefinitions.Where(md => md.MessageAction == Core.MessageAction.Event).Select(md => md.QueueName).Distinct())
            {
                _channel.ExchangeDeclare(exchange, "fanout", true);
            }
        }
Esempio n. 5
0
        public WSBMessageBus(IMessageBusContainer container, IMessageBusConfiguration configuration)
        {
            _container     = container;
            _configuration = configuration;
            _serialiser    = container.ResolveType <IMessageBusSerialiser>();

            var extendedConfig = configuration.ExtendedConfiguration as WSBExtendedConfiguration;

            if (extendedConfig == null)
            {
                extendedConfig = new WSBExtendedConfiguration();
            }

            var connectStringBuilder = new ServiceBusConnectionStringBuilder();
            var hostName             = string.IsNullOrEmpty(_configuration.HostName) ? _defaultHost : _configuration.HostName;
            var managementPort       = extendedConfig.HttpPort == 0 ? _defaultManagementPort : extendedConfig.HttpPort;
            var runtimePort          = extendedConfig.TcpPort == 0 ? _defaultRuntimePort : extendedConfig.TcpPort;

            connectStringBuilder.ManagementPort = managementPort;
            connectStringBuilder.RuntimePort    = runtimePort;
            connectStringBuilder.Endpoints.Add((new UriBuilder()
            {
                Scheme = "sb", Host = hostName, Path = extendedConfig.ServiceNamespace
            }).Uri);
            connectStringBuilder.StsEndpoints.Add((new UriBuilder()
            {
                Scheme = "https", Host = hostName, Port = managementPort, Path = extendedConfig.ServiceNamespace
            }).Uri);

            var connectionString = connectStringBuilder.ToString();

            _messageFactory   = MessagingFactory.CreateFromConnectionString(connectionString);
            _namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);

            foreach (var queueName in _configuration.MessageDefinitions.Where(md => md.MessageAction == Core.MessageAction.Event).Select(md => md.QueueName).Distinct())
            {
                CreateTopic(queueName);
            }
        }