Exemple #1
0
        static void Main(string[] args)
        {
            IKernel kernel = new StandardKernel();
            IMessageBusConfiguration configuration =
                MessageBusConfiguration.Create()
                .EndpointName("TestSubscriber")
                .ErrorQueueName("SubscriberErrors")
                .AddMessageDefinition <TestMessage>(d => {
                d.MessageAction = MessageAction.Event;
                d.QueueName     = "TestService";
                d.HandlerType   = typeof(TestMessageHandler);
            });

            kernel.Bind <IMessageBusSerialiser>().To <JsonSerialiser>();
            kernel.Bind <IMessageBusConfiguration>().ToConstant(configuration).InSingletonScope();

            IMessageBusContainer container = new NinjectContainer(kernel);

            //var bus = new NSBMessageBus(container, configuration);
            //var bus = new RMQMessageBus(container, configuration);
            //var bus = new AMQMessageBus(container, configuration);
            var bus = new WSBMessageBus(container, configuration.HostName("campc-df7.bradyplc.com").ServiceNamespace("TheMagicBus"));

            bus.Start();

            Console.WriteLine("Press Enter to quit");
            Console.ReadLine();
        }
Exemple #2
0
 void RegisterMintRequestProjector(IMessageBusConfiguration configuration)
 {
     configuration.EventReceivers.Register <MintRequested>(() => mintRequestProjector);
     configuration.EventReceivers.Register <Minted>(() => mintRequestProjector);
     configuration.EventReceivers.Register <MintCanceling>(() => mintRequestProjector);
     configuration.EventReceivers.Register <MintCanceled>(() => mintRequestProjector);
 }
Exemple #3
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);
        }
Exemple #4
0
        internal MessageDispatcher(IMessageBusConfiguration configuration, ISagaActivator sagaActivator)
        {
            Contract.Requires(configuration != null);
            Contract.Requires(sagaActivator != null);

            commands = new CommandDispatcher(configuration, sagaActivator);
            events   = new EventDispatcher(configuration, sagaActivator);
        }
Exemple #5
0
        protected MessageDispatcher(IMessageBusConfiguration configuration, ISagaActivator saga)
        {
            Contract.Requires(configuration != null);
            Contract.Requires(saga != null);

            Configuration = configuration;
            Saga          = saga;
        }
        internal InMemoryMessageBusConfiguration(IMessageBusConfiguration configuration, PendingOperations pendingOperations)
        {
            Arg.NotNull(configuration, nameof(configuration));
            Arg.NotNull(pendingOperations, nameof(pendingOperations));

            inner             = configuration;
            PendingOperations = pendingOperations;
        }
Exemple #7
0
 void RegisterOrderProjector(IMessageBusConfiguration configuration)
 {
     configuration.EventReceivers.Register <OrderPlaced>(() => orderProjector);
     configuration.EventReceivers.Register <OrderFulfilled>(() => orderProjector);
     configuration.EventReceivers.Register <OrderCanceled>(() => orderProjector);
     configuration.EventReceivers.Register <TokenReserved>(() => orderProjector);
     configuration.EventReceivers.Register <TokenUnreserved>(() => orderProjector);
 }
Exemple #8
0
 public AzureMessagePublisher(IMessageBusConfiguration configuration,
                              IMessageSerializer serializer,
                              ILogger <AzureMessagePublisher> logger)
 {
     _configuration = configuration;
     _serializer    = serializer;
     _logger        = logger;
 }
Exemple #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MessageBus"/> class.
        /// </summary>
        /// <param name="configuration">The associated <see cref="IMessageBusConfiguration">configuration</see>.</param>
        public MessageBus(IMessageBusConfiguration configuration)
        {
            Arg.NotNull(configuration, nameof(configuration));

            Configuration = configuration;
            SagaActivator = new SagaActivator(configuration);
            dispatcher    = new MessageDispatcher(configuration, SagaActivator);
            commandSender = new QueuedCommandSender(configuration.MessageSender);
        }
Exemple #10
0
        void RegisterOrderSaga(IMessageBusConfiguration configuration)
        {
            Func <Order> activateSaga = () => new Order();

            configuration.CommandHandlers.Register <PlaceOrder>(activateSaga);
            configuration.CommandHandlers.Register <CancelOrder>(activateSaga);
            configuration.EventReceivers.Register <OrderPlaced>(activateSaga);
            configuration.EventReceivers.Register <OrderTookTooLongToFulfill>(activateSaga);
        }
Exemple #11
0
        void RegisterMintingSaga(IMessageBusConfiguration configuration)
        {
            Func <MintRequest> activateSaga = () => new MintRequest();

            configuration.CommandHandlers.Register <Mint>(activateSaga);
            configuration.CommandHandlers.Register <StartMintJob>(activateSaga);
            configuration.CommandHandlers.Register <CancelMint>(activateSaga);
            configuration.CommandHandlers.Register <StopMintJob>(activateSaga);
        }
Exemple #12
0
 public ActiveMQMessagePublisher(IMessageBusConfiguration configuration,
                                 IMessageSerializer serializer,
                                 ILogger <ActiveMQMessagePublisher> logger)
 {
     _configuration = configuration;
     _serializer    = serializer;
     _factory       = new ConnectionFactory(_configuration.ConnectionString);
     _logger        = logger;
 }
Exemple #13
0
        public static IMessageBusConfiguration MessageDefinition(this IMessageBusConfiguration config, MessageMetadata definition)
        {
            if (config.MessageDefinitions == null)
            {
                config.MessageDefinitions = new List <MessageMetadata>();
            }

            config.MessageDefinitions.Add(definition);
            return(config);
        }
Exemple #14
0
        internal SagaActivator(IMessageBusConfiguration configuration)
        {
            Contract.Requires(configuration != null);

            var sagas = configuration.Sagas;

            this.configuration = configuration;
            clock        = configuration.Clock;
            storage      = sagas.Storage;
            sagaMetadata = sagas.Metadata;
        }
Exemple #15
0
 void RegisterTokenProjector(IMessageBusConfiguration configuration)
 {
     configuration.EventReceivers.Register <TokenMinted>(() => tokenProjector);
     configuration.EventReceivers.Register <TokenCirculated>(() => tokenProjector);
     configuration.EventReceivers.Register <TokenReserved>(() => tokenProjector);
     configuration.EventReceivers.Register <TokenActivated>(() => tokenProjector);
     configuration.EventReceivers.Register <TokenRedeemed>(() => tokenProjector);
     configuration.EventReceivers.Register <TokenDeactivated>(() => tokenProjector);
     configuration.EventReceivers.Register <TokenUnreserved>(() => tokenProjector);
     configuration.EventReceivers.Register <TokenVoided>(() => tokenProjector);
 }
Exemple #16
0
 public ActiveMQMessageHandler(IServiceProvider serviceProvider,
                               IMessageBusConfiguration configuration,
                               IMessageSerializer serializer,
                               IActiveMQMessageFilterFactory filterFactory,
                               ILogger <ActiveMQMessageHandler> logger)
 {
     _serviceProvider = serviceProvider;
     _configuration   = configuration;
     _serializer      = serializer;
     _filterFactory   = filterFactory;
     _factory         = new ConnectionFactory(_configuration.ConnectionString);
     _logger          = logger;
 }
Exemple #17
0
        public static IMessageBusConfiguration AddMessageDefinition <T_message>(this IMessageBusConfiguration config, Action <MessageMetadata <T_message> > configureDefinition)
        {
            if (config.MessageDefinitions == null)
            {
                config.MessageDefinitions = new List <MessageMetadata>();
            }

            var definition = new MessageMetadata <T_message>();

            configureDefinition(definition);
            config.MessageDefinitions.Add(definition);
            return(config);
        }
Exemple #18
0
        void RegisterTokenCommandHandlers(IMessageBusConfiguration configuration)
        {
            var tokens     = (IRepository <string, Token>)configuration.GetService(typeof(IRepository <string, Token>));
            var tokenVault = (ITokenVault)configuration.GetService(typeof(ITokenVault));
            var handler    = new TokenStateMediator(tokens, tokenVault);

            configuration.CommandHandlers.Register <ReserveToken>(() => handler);
            configuration.CommandHandlers.Register <RedeemToken>(() => handler);
            configuration.CommandHandlers.Register <VoidToken>(() => handler);
            configuration.CommandHandlers.Register <DeactivateToken>(() => handler);
            configuration.CommandHandlers.Register <UnreserveToken>(() => handler);
            configuration.CommandHandlers.Register <ActivateToken>(() => handler);
        }
Exemple #19
0
        public NSBMessageHandlerTypes(IMessageBusConfiguration config)
        {
            _config = config;

            var nsbHandlerType = typeof(NSBMessageHandler <,>);
            var bmfHandlerType = typeof(MessageHandler <>);

            _handlers = _config.MessageDefinitions.Select(md =>
            {
                var bmfMessageHandlerType = bmfHandlerType.MakeGenericType(md.MessageType);
                var nsbMessageHandlerType = nsbHandlerType.MakeGenericType(md.MessageType, bmfMessageHandlerType);
                return(nsbMessageHandlerType);
            }).ToArray();
        }
Exemple #20
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();
        }
Exemple #21
0
        public static IMessageBusConfiguration TcpPort(this IMessageBusConfiguration config, int port)
        {
            if (config.ExtendedConfiguration == null)
            {
                config.ExtendedConfiguration = new WSBExtendedConfiguration();
            }

            var wsbConf = config.ExtendedConfiguration as WSBExtendedConfiguration;

            if (wsbConf != null)
            {
                wsbConf.TcpPort = port;
            }

            return(config);
        }
Exemple #22
0
        public static IMessageBusConfiguration ServiceNamespace(this IMessageBusConfiguration config, string serviceNamespace)
        {
            if (config.ExtendedConfiguration == null)
            {
                config.ExtendedConfiguration = new WSBExtendedConfiguration();
            }

            var wsbConf = config.ExtendedConfiguration as WSBExtendedConfiguration;

            if (wsbConf != null)
            {
                wsbConf.ServiceNamespace = serviceNamespace;
            }

            return(config);
        }
Exemple #23
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);
            }
        }
Exemple #24
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);
            }
        }
Exemple #25
0
        static void Main(string[] args)
        {
            IKernel kernel = new StandardKernel();
            IMessageBusConfiguration configuration =
                MessageBusConfiguration.Create()
                .EndpointName("TestClient")
                .ErrorQueueName("ClientErrors")
                .AddMessageDefinition <TestRequest>(d => d.MessageAction = MessageAction.Command);

            kernel.Bind <IMessageBusSerialiser>().To <JsonSerialiser>();
            kernel.Bind <IMessageBusConfiguration>().ToConstant(configuration).InSingletonScope();

            IMessageBusContainer container = new NinjectContainer(kernel);

            //var bus = new NSBMessageBus(container, configuration);
            //var bus = new RMQMessageBus(container, configuration);
            //var bus = new AMQMessageBus(container, configuration);
            var bus = new WSBMessageBus(container, configuration.HostName("campc-df7.bradyplc.com").ServiceNamespace("TheMagicBus"));

            bus.Start();

            SendMessages(bus);
        }
Exemple #26
0
 internal CommandDispatcher(IMessageBusConfiguration configuration, ISagaActivator saga)
     : base(configuration, saga) => commandHandlers = configuration.CommandHandlers;
Exemple #27
0
 public static IMessageBusConfiguration EndpointName(this IMessageBusConfiguration config, string endpoint)
 {
     config.EndpointName = endpoint;
     return(config);
 }
Exemple #28
0
 public static IMessageBusConfiguration ErrorQueueName(this IMessageBusConfiguration config, string errorQueue)
 {
     config.ErrorQueueName = errorQueue;
     return(config);
 }
 public MessageBus(IHandler handler, IMessageBusConfiguration configuration)
 {
     this.configuration = configuration;
     this.handler       = handler;
 }
Exemple #30
0
 public NSBRouteConfiguration(IMessageBusConfiguration configuration)
 {
     _messageDefinitions = configuration.MessageDefinitions;
 }