Пример #1
0
        static void Main(string[] args)
        {
            EventStoreLoader.SetupEventStore(EventStoreLoader.StartConflictOption.Connect);
            var connection = EventStoreLoader.Connection;

            var bus   = new FakeBus();
            var queue = new ReadmodelPublisher();



            var orderCreatedHandler = new CreateOrderCommandHandler(
                new Repository <Order>(
                    new Disruptor.ReadModel.Tests.Infrastructure.EventStore(connection, queue)));
            var orderItemAddedHandler = new AddItemToOrderCommandHandler(
                new Repository <Order>(
                    new Disruptor.ReadModel.Tests.Infrastructure.EventStore(connection, queue)));

            bus.RegisterAsyncHandler <CreateOrderCommand>(orderCreatedHandler.HandleAsync);
            bus.RegisterAsyncHandler <AddItemToCardCommand>(orderItemAddedHandler.HandleAsync);


            TestSendCommandAndFillupReadmodel(queue, bus);

            EventStoreLoader.TeardownEventStore(false, true);
        }
Пример #2
0
        static void Main(string[] args)
        {
            const string STREAM      = "a_test_stream";
            const int    DEFAULTPORT = 1113;


            LogManager.Configuration = LoggingConfig.GetDefault();
            var queue = new ReadmodelPublisher();

            queue.Start(typeof(OrderCreatedEvent).Assembly);
            _queue = queue;
            //uncommet to enable verbose logging in client.
            var settings = ConnectionSettings.Create();//.EnableVerboseLogging().UseConsoleLogger();

            using (var conn = EventStoreConnection
                              .Create(settings, new Uri($"tcp://*****:*****@localhost:{DEFAULTPORT}"), "myConn"))
            {
                var readModelSubscription = new ReadModelSubscription().SetRetryPolicy(Retries.Fifteen, (i) => TimeSpan.FromMilliseconds(500));
                var readModelConsumer     = new ReadModelConsumer(conn, queue);
                conn.ConnectAsync().Wait();
                Task.Run(async() =>
                {
                    await readModelConsumer.ConnectToSubscription(readModelSubscription);
                });

                Console.WriteLine("waiting for events. press enter to exit");
                Console.ReadLine();
            }
        }
Пример #3
0
        private static void TestSendCommandAndFillupReadmodel(ReadmodelPublisher queue,
                                                              FakeBus bus)
        {
            queue.Start(typeof(Program).Assembly);

            System.Console.WriteLine("Hit any to start. Ctrl+C to quit when running.");
            System.Console.ReadKey();

            var cancellationTokenSource = new CancellationTokenSource();

            var senderTask = new Action(async() =>
            {
                var orderId = Guid.NewGuid();

                var loopIterations = 0;
                while (loopIterations < 20)
                {
                    if (cancellationTokenSource.IsCancellationRequested)
                    {
                        break;
                    }

                    await bus.SendAsync(new CreateOrderCommand()
                    {
                        OrderId      = orderId,
                        CustomerName = "Joske"
                    });

                    await bus.SendAsync(new AddItemToCardCommand()
                    {
                        OrderId = orderId,
                        Card    = "test"
                    });

                    orderId = Guid.NewGuid();

                    await Task.Delay(1, cancellationTokenSource.Token);

                    loopIterations++;
                }
            });

            var tList = new List <Task>();

            for (int i = 0; i < 1; i++)
            {
                var t = new Task(senderTask, cancellationTokenSource.Token, TaskCreationOptions.LongRunning);
                t.Start();
                tList.Add(t);
            }


            Console.WriteLine("done");
            Console.ReadKey();
            // var summary = queue.Getsummary();
            //Console.WriteLine($"summary, send {intSequence} items, handled messages summary: {summary}");
            try
            {
                cancellationTokenSource.Cancel();
                queue.Stop();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }


            Console.ReadKey();
        }