示例#1
0
        public void MultipleInitializationsRaceConditionTest()
        {
            var transportResolver = new TransportResolver(new Dictionary <string, TransportInfo>
            {
                { "tr1", new TransportInfo("host", "guest", "guest", null, "InMemory") },
                { "tr2", new TransportInfo("host", "guest", "guest", null, "InMemory") }
            });
            var messagingEngine = new MessagingEngine(transportResolver, new ITransportFactory[] { new InMemoryTransportFactory() });

            messagingEngine.SerializationManager.RegisterSerializer("txt", typeof(string), new FakeStringSerializer());
            var fp1           = new FeedProvider1(messagingEngine);
            var consoleLogger = new ConsoleLogger();

            fp1.Logger = consoleLogger;
            var fp2 = new FeedProvider2(messagingEngine);

            fp2.Logger = consoleLogger;

            var databus = new DataBus();

            databus.RegisterFeedProvider("FP1", fp1);
            databus.RegisterFeedProvider("FP2", fp2);
            var disposable1 = databus.Channel <string>("FP1").Feed("context1").Subscribe(Console.WriteLine);
            var disposable2 = databus.Channel <string>("FP2").Feed("context2").Subscribe(Console.WriteLine);

            Thread.Sleep(10000);

            disposable1.Dispose();
            disposable2.Dispose();
        }
示例#2
0
        public void CqrsEngineTest()
        {
            var serializationManager = new SerializationManager();

            serializationManager.RegisterSerializerFactory(new JsonSerializerFactory());
            var transportResolver =
                new TransportResolver(new Dictionary <string, TransportInfo>
            {
                { "test", new TransportInfo("localhost", "guest", "guest", null, "RabbitMq") }
            });
            var messagingEngine = new MessagingEngine(transportResolver, new RabbitMqTransportFactory());


            using (messagingEngine)
            {
                var cqrsEngine = new CqrsEngine(messagingEngine, new FakeEndpointResolver(),
                                                LocalBoundedContext.Named("integration")
                                                .PublishingEvents(typeof(int)).To("eventExchange").RoutedTo("eventQueue")
                                                .ListeningCommands(typeof(string)).On("commandExchange").RoutedFrom("commandQueue")
                                                .WithCommandsHandler <CommandsHandler>(),
                                                LocalBoundedContext.Named("bc").WithProjection <EventListener>("integration")
                                                );

/*                var cqrsEngine = new CqrsEngine(messagingEngine, new RabbitMqConventionEndpointResolver("test","json",new EndpointResolver(new Dictionary<string, Endpoint>())),
 *                                              LocalBoundedContext.Named("integration")
 *                                                                 .PublishingEvents(typeof (int)).To("events").RoutedToSameEndpoint()
 *                                                                 .ListeningCommands(typeof (string)).On("commands").RoutedFromSameEndpoint()
 *                                                                 .WithCommandsHandler<CommandsHandler>(),
 *                                              LocalBoundedContext.Named("bc").WithProjection<EventListener>("integration")
 *                  );*/
                /* var c=new commandSender(messagingEngine, RemoteBoundedContext.Named("integration")
                 *                                  .ListeningCommands(typeof(TestCommand)).On(new Endpoint())
                 *                                  .PublishingEvents(typeof(TransferCreatedEvent)).To(new Endpoint()),
                 *                                  LocalBoundedContext.Named("testBC")
                 *                                  .ListeningCommands(typeof(TestCommand)).On(new Endpoint("test", "unistream.u1.commands", true))
                 *                                  .ListeningCommands(typeof(int)).On(new Endpoint("test", "unistream.u1.commands", true))
                 *                                  .PublishingEvents(typeof (int)).To(new Endpoint()).RoutedTo(new Endpoint())
                 *                                  .PublishingEvents(typeof (string)).To(new Endpoint())
                 *                                  .WithEventStore(dispatchCommits => Wireup.Init()
                 *                                                                           .LogToOutputWindow()
                 *                                                                           .UsingInMemoryPersistence()
                 *                                                                           .InitializeStorageEngine()
                 *                                                                           .UsingJsonSerialization()
                 *                                                                           .UsingSynchronousDispatchScheduler()
                 *                                                                               .DispatchTo(dispatchCommits))
                 *                              ); */



                //  messagingEngine.Send("test", new Endpoint("test", "unistream.u1.commands", true,"json"));
                cqrsEngine.SendCommand("test", "integration");
                Thread.Sleep(3000);
            }
        }
示例#3
0
        public void SubscriptionToClusterTest()
        {
            ITransportResolver transportResolver = new TransportResolver(new Dictionary <string, TransportInfo>()
            {
                { "main", new TransportInfo("localhost1,localhost", "guest", "guest", "None", "RabbitMq") },
                { "sendTransport", new TransportInfo("localhost", "guest", "guest", "None", "RabbitMq") }
            });
            var endpoint     = new Endpoint("main", TEST_EXCHANGE, TEST_QUEUE, true, SerializationFormat.Json);
            var sendEndpoint = new Endpoint("sendTransport", TEST_EXCHANGE, TEST_QUEUE, true, SerializationFormat.Json);


            using (var me = new MessagingEngine(_logFactory, transportResolver, new RabbitMqTransportFactory(_logFactory, false)))
            {
                me.Send(1, sendEndpoint);
                me.ResubscriptionTimeout = 100;
                var received = new ManualResetEvent(false);
                me.Subscribe <int>(endpoint, i => received.Set());
                Assert.That(received.WaitOne(1000), Is.True, "Subscription when first broker in list is not resolvable while next one is ok");
            }
        }
示例#4
0
        public void UnknownMessageTest()
        {
            ITransportResolver transportResolver = new TransportResolver(new Dictionary <string, TransportInfo>()
            {
                { "main", new TransportInfo(HOST, "guest", "guest", "None", "RabbitMq") }
            });
            var eq = new Endpoint("main", TEST_QUEUE, true, "json");
            var ee = new Endpoint("main", TEST_EXCHANGE, true, "json");

            using (var me = new MessagingEngine(transportResolver, new RabbitMqTransportFactory()))
            {
                me.Send("string value", ee);
            }

            using (var me = new MessagingEngine(transportResolver, new RabbitMqTransportFactory()))
            {
                me.Subscribe <int>(eq, Console.WriteLine);
                me.Subscribe <double>(eq, Console.WriteLine);
                // me.Subscribe<string>(eq, Console.WriteLine);
            }
            Thread.Sleep(1200);
        }