示例#1
0
        public when_using_listener_start_with_event_type(StreamStoreConnectionFixture fixture)
        {
            var streamNameBuilder = new PrefixedCamelCaseStreamNameBuilder();
            var conn = fixture.Connection;

            conn.Connect();

            var originalAggregateStream =
                streamNameBuilder.GenerateForAggregate(
                    typeof(TestAggregate),
                    Guid.NewGuid());
            var evt = new EventProjectionTestEvent();
            //drop the event into the stream
            var result = conn.AppendToStream(
                originalAggregateStream,
                ExpectedVersion.NoStream,
                null,
                _eventSerializer.Serialize(evt));

            Assert.True(result.NextExpectedVersion == 0);

            //wait for the projection to be written
            CommonHelpers.WaitForStream(conn, streamNameBuilder.GenerateForEventType(nameof(EventProjectionTestEvent)));

            //build the listener
            StreamListener listener = new SynchronizableStreamListener(
                "event listener",
                conn,
                streamNameBuilder,
                _eventSerializer);

            listener.EventStream.Subscribe(new AdHocHandler <EventProjectionTestEvent>(Handle));
            listener.Start(typeof(EventProjectionTestEvent));
        }
示例#2
0
        static EventStoreHelper()
        {
            var settings = CommonHelper.GetConfig().GetSection("eventStore");

            var userCredentials = new ReactiveDomain.UserCredentials(
                username: settings["ESUserId"],
                password: settings["ESPassword"]);

            var eventStoreLoader = new EventStoreLoader();

            eventStoreLoader.Connect(
                credentials: userCredentials,
                server: IPAddress.Parse(settings["ESipAddress"]),
                tcpPort: int.Parse(settings["ESTcpPort"]));

            var streamNameBuilder = new PrefixedCamelCaseStreamNameBuilder(Constants.DomainPrefix);

            GetListener = name => new StreamListener(
                listenerName: name,
                eventStoreConnection: eventStoreLoader.Connection,
                streamNameBuilder: streamNameBuilder,
                serializer: new JsonMessageSerializer());

            GetRepository = () => new StreamStoreRepository(
                streamNameBuilder: streamNameBuilder,
                eventStoreConnection: eventStoreLoader.Connection,
                eventSerializer: new JsonMessageSerializer());
        }
示例#3
0
        public EventStoreFixture()
        {
            _node = EmbeddedVNodeBuilder
                    .AsSingleNode()
                    .OnDefaultEndpoints()
                    .RunInMemory()
                    .DisableDnsDiscovery()
                    .DisableHTTPCaching()
                    //.DisableScavengeMerging()
                    .DoNotVerifyDbHashes()
                    .Build();

            _node.StartAndWaitUntilReady().Wait();

            var conns = ConnectionSettings.Create()
                        .SetDefaultUserCredentials(new EventStore.ClientAPI.SystemData.UserCredentials("admin", "changeit"))
                        .Build();

            var eventStoreConnection = EmbeddedEventStoreConnection.Create(_node, conns);

            StreamStoreConnection = new EventStoreConnectionWrapper(eventStoreConnection);

            EventSerializer   = new JsonMessageSerializer();
            StreamNameBuilder = new PrefixedCamelCaseStreamNameBuilder("masterdata");

            _repo = new StreamStoreRepository(StreamNameBuilder, StreamStoreConnection, EventSerializer);
        }
示例#4
0
        public void Bootstrap()
        {
            IEventStoreConnection esConnection = EventStoreConnection.Create("ConnectTo=tcp://admin:changeit@localhost:1113");

            conn = new EventStoreConnectionWrapper(esConnection);
            esConnection.Connected += (_, __) => Console.WriteLine("Connected");
            esConnection.ConnectAsync().Wait();
            IStreamNameBuilder namer = new PrefixedCamelCaseStreamNameBuilder();
            IEventSerializer   ser   = new JsonMessageSerializer();

            repo       = new StreamStoreRepository(namer, conn, ser);
            cmdHandler = new AccountCommandHandler(repo);
            AccountAggregate acct = null;

            try
            {
                var command = new CreateAccountCommand()
                {
                    AccountId  = _accountId,
                    HolderName = _holderName
                };
                cmdHandler.Handle(command);
            }
            catch (Exception e)
            {
            }
            listener   = new StreamListener("AccountAggregate", conn, namer, ser);
            _readModel = new BalanceReadModel(() => listener);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            IEventStoreConnection conn = EventStoreConnection.Create("ConnectTo=tcp://admin:changeit@localhost:1113");

            conn.Connected += (_, __) => Console.WriteLine("Connected");
            conn.ConnectAsync().Wait();

            conn.AppendToStreamAsync("Test", ExpectedVersion.Any, new[] {
                new EventData(
                    Guid.NewGuid(),
                    "TestEvent",
                    false,
                    Encoding.UTF8.GetBytes("Test event data"),
                    Encoding.UTF8.GetBytes("Test event Metadata"))
            });

            Console.WriteLine("Event Written");

            var evt = conn.ReadStreamEventsForwardAsync("Test", StreamPosition.Start, 1, false).Result;

            Console.WriteLine(Encoding.UTF8.GetString(evt.Events[0].Event.Data));
            Console.ReadKey();
            return;

            IStreamStoreConnection streamConn  = new EventStoreConnectionWrapper(conn);
            IStreamNameBuilder     nameBuilder = new PrefixedCamelCaseStreamNameBuilder();
            IEventSerializer       serializer  = new JsonMessageSerializer();
            IRepository            repo        = new StreamStoreRepository(nameBuilder, streamConn, serializer);

            repo.Save(new Account(Guid.NewGuid()));

            IListener myListener = new StreamListener("Account Listener", streamConn, nameBuilder, serializer);
        }
        public when_using_listener_start_with_category_aggregate(StreamStoreConnectionFixture fixture)
        {
            var streamNameBuilder = new PrefixedCamelCaseStreamNameBuilder();
            var conn = fixture.Connection;

            conn.Connect();

            var aggStream      = streamNameBuilder.GenerateForAggregate(typeof(AggregateCategoryTestAggregate), Guid.NewGuid());
            var categoryStream = streamNameBuilder.GenerateForCategory(typeof(AggregateCategoryTestAggregate));

            // Drop an event into the stream testAggregate-guid
            var result = conn.AppendToStream(
                aggStream,
                ExpectedVersion.NoStream,
                null,
                _eventSerializer.Serialize(new TestEvent(CorrelatedMessage.NewRoot())));

            Assert.True(result.NextExpectedVersion == 0);

            //wait for the projection to be written.
            CommonHelpers.WaitForStream(conn, categoryStream);

            // Now set up the projection listener, and start it.
            var listener = new SynchronizableStreamListener(
                "category listener",
                conn,
                streamNameBuilder,
                new JsonMessageSerializer());

            listener.EventStream.Subscribe <TestEvent>(new AdHocHandler <TestEvent>(Handle));
            listener.Start <AggregateCategoryTestAggregate>();
        }
示例#7
0
 protected with_message_logging_enabled(IStreamStoreConnection connection)
 {
     Connection        = connection;
     Bus               = new Dispatcher(nameof(with_message_logging_enabled));
     StreamNameBuilder = new PrefixedCamelCaseStreamNameBuilder("UnitTest");
     EventSerializer   = new JsonMessageSerializer();
     Repo              = new StreamStoreRepository(StreamNameBuilder, Connection, new JsonMessageSerializer());
     // instantiate Logger class that inherits from QueuedSubscriber
     Logging = new EventStoreMessageLogger(Bus,
                                           Connection,
                                           StreamName,
                                           true);
 }
        public MockRepositorySpecification()
        {
            StreamNameBuilder     = new PrefixedCamelCaseStreamNameBuilder();
            StreamStoreConnection = new MockStreamStoreConnection("Test");
            StreamStoreConnection.Connect();
            EventSerializer = new JsonMessageSerializer();
            MockRepository  = new StreamStoreRepository(StreamNameBuilder, StreamStoreConnection, EventSerializer);

            var connectorBus = new InMemoryBus("connector");

            StreamStoreConnection.SubscribeToAll(evt => connectorBus.Publish((IMessage)EventSerializer.Deserialize(evt)));
            RepositoryEvents = new TestQueue(connectorBus, new[] { typeof(Event) });
        }
        public void Bootstrap()
        {
            IEventStoreConnection esConnection = EventStoreConnection.Create("ConnectTo=tcp://admin:changeit@localhost:1113");

            conn = new EventStoreConnectionWrapper(esConnection);
            esConnection.Connected += (_, __) => Console.WriteLine("Connected");
            esConnection.ConnectAsync().Wait();
            IStreamNameBuilder namer = new PrefixedCamelCaseStreamNameBuilder();
            IEventSerializer   ser   = new JsonMessageSerializer();

            repo = new StreamStoreRepository(namer, conn, ser);
            OrderAggregate order = null;

            IListener listener = new StreamListener("Order", conn, namer, ser);

            _readModel = new OrderReadModel(() => listener);
        }
示例#10
0
        public AccountService()
        {
            IEventStoreConnection esConnection = EventStoreConnection.Create("ConnectTo=tcp://admin:changeit@localhost:1113");
            var conn = new EventStoreConnectionWrapper(esConnection);

            esConnection.Connected += (_, __) => { };
            //Console.WriteLine("Connected");
            esConnection.ConnectAsync().Wait();
            IStreamNameBuilder namer = new PrefixedCamelCaseStreamNameBuilder();
            IEventSerializer   ser   = new JsonMessageSerializer();

            _repo       = new StreamStoreRepository(namer, conn, ser);
            _cmdHandler = new AccountCommandHandler(_repo);

            var listener = new StreamListener("AccountAggregate", conn, namer, ser);

            _readModel = new BalanceReadModel(() => listener);
        }
示例#11
0
        protected AccountTestsBase()
        {
            AccountId = Guid.NewGuid();
            IEventStoreConnection esConnection = EventStoreConnection.Create("ConnectTo=tcp://admin:changeit@localhost:1113");
            var conn = new EventStoreConnectionWrapper(esConnection);

            esConnection.Connected += (_, __) => { };
            esConnection.ConnectAsync().Wait();
            IStreamNameBuilder namer = new PrefixedCamelCaseStreamNameBuilder("Tests");
            IEventSerializer   ser   = new JsonMessageSerializer();

            Repo       = new StreamStoreRepository(namer, conn, ser);
            CmdHandler = new AccountCommandHandler(Repo);

            var listener = new StreamListener("AccountAggregate", conn, namer, ser);

            ReadModel = new BalanceReadModel(() => listener);
        }
示例#12
0
        public StreamStoreReadTests(StreamStoreConnectionFixture fixture)
        {
            IStreamNameBuilder streamNameBuilder = new PrefixedCamelCaseStreamNameBuilder("UnitTest");
            var mockStreamStore = new MockStreamStoreConnection("Test");

            mockStreamStore.Connect();

            _stores.Add(mockStreamStore);
            _stores.Add(fixture.Connection);

            _streamName = streamNameBuilder.GenerateForAggregate(typeof(TestAggregate), Guid.NewGuid());
            var eventCount = 10;

            foreach (var store in _stores)
            {
                AppendEvents(eventCount, store, _streamName);
            }

            _lastEvent = eventCount - 1;
        }
示例#13
0
        public void Bootstrap()
        {
            IEventStoreConnection esConnection = EventStoreConnection.Create("ConnectTo=tcp://admin:changeit@localhost:1113");

            conn = new EventStoreConnectionWrapper(esConnection);
            esConnection.Connected += (_, __) => Console.WriteLine("Connected");
            esConnection.ConnectAsync().Wait();
            IStreamNameBuilder namer = new PrefixedCamelCaseStreamNameBuilder();
            IEventSerializer   ser   = new JsonMessageSerializer();

            repo = new StreamStoreRepository(namer, conn, ser);
            Account acct = null;

            try {
                repo.Save(new Account(_accountId));
            }
            catch (Exception e) {
            }
            IListener listener = new StreamListener("Account", conn, namer, ser);

            _readModel = new BalanceReadModel(() => listener, _accountId);
        }