Ejemplo n.º 1
0
        public static IEventFlowOptions UseStreamsDbEventStore(
            this IEventFlowOptions eventFlowOptions,
            string connectionString,
            string service)
        {
            StreamsDBClient client = null;

            using (var a = AsyncHelper.Wait)
            {
                a.Run(StreamsDBClient.Connect(connectionString), c => client = c);
            }

            return(eventFlowOptions
                   .RegisterServices(f =>
            {
                f.Register(r => client, Lifetime.Singleton);
                f.Register <NullReadModelLocator, NullReadModelLocator>();

                // todo: move to own extension method
                //f.Register<IStreamsDbMessageFactory, StreamsDbMessageFactory>(Lifetime.Singleton);
                //f.Register<IStreamsDbPublisher, StreamsDbPublisher>(Lifetime.Singleton);
                //f.Register<ISubscribeSynchronousToAll, StreamsDbDomainEventPublisher>();

                // f.Register(rc => new StreamsDbServiceConfiguration(service), Lifetime.Singleton);
            })
                   //.AddMetadataProvider<ServiceMetadataProvider>()
                   .UseEventStore <StreamsDbEventPersistence>());
        }
Ejemplo n.º 2
0
        static async Task Main(string[] args)
        {
            var client = await StreamsDBClient.Connect();

            var db = client.DB();

            // read from stdin and write to stream
            var input = Task.Run(async() =>
            {
                Console.WriteLine("enter a message an press [enter]");

                while (true)
                {
                    try
                    {
                        var line = Console.ReadLine();
                        await db.AppendStream("chat", new MessageInput
                        {
                            Type  = "string",
                            Value = Encoding.UTF8.GetBytes(line)
                        });
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("append failed: " + e.Message);
                    }
                }
            });

            // subscribe to stream and print messages
            var read = Task.Run(async() =>
            {
                try
                {
                    await using var subscription = db.SubscribeStream("chat", -1);

                    while (await subscription.MoveNextAsync())
                    {
                        var message = subscription.Current;

                        var text = Encoding.UTF8.GetString(message.Value);
                        Console.WriteLine("received: " + text);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("read error: " + e);
                }
            });

            Task.WaitAny(input, read);
        }
Ejemplo n.º 3
0
 public StreamsDbSubscriberManager(
     ILog log,
     IResolver resolver,
     StreamsDBClient client,
     string stream,
     string subscriber)
 {
     _log           = log;
     _resolver      = resolver;
     _client        = client;
     _stream        = stream;
     _cursorsStream = $"{subscriber}-cursors";
 }
Ejemplo n.º 4
0
        public static IEventFlowOptions UseStreamsDbEventStore(
            this IEventFlowOptions eventFlowOptions,
            string connectionString)
        {
            StreamsDBClient client = null;

            using (var a = AsyncHelper.Wait)
            {
                a.Run(StreamsDBClient.Connect(connectionString), c => client = c);
            }

            return(eventFlowOptions
                   .RegisterServices(f => f.Register(r => client, Lifetime.Singleton))
                   .UseEventStore <StreamsDbEventPersistence>());
        }
Ejemplo n.º 5
0
        public SubscriptionBasedSingleAggregateReadStoreManager(
            ILog log,
            IResolver resolver,
            TReadModelStore readModelStore,
            IReadModelDomainEventApplier readModelDomainEventApplier,
            IReadModelFactory <TReadModel> readModelFactory,
            IEventJsonSerializer eventJsonSerializer,
            StreamsDBClient client)
        {
            Log            = log;
            Resolver       = resolver;
            ReadModelStore = readModelStore;
            ReadModelDomainEventApplier = readModelDomainEventApplier;
            ReadModelFactory            = readModelFactory;
            EventJsonSerializer         = eventJsonSerializer;
            Client = client;

            _cursorsStream = $"{typeof(TReadModel).Name.ToLowerInvariant()}-cursors";
        }
Ejemplo n.º 6
0
 public StreamsDbEventPersistence(ILog log, StreamsDBClient client)
 {
     _log    = log;
     _client = client;
 }
Ejemplo n.º 7
0
 public StreamsDbReadModelStore(StreamsDBClient client, IReadModelFactory <TReadModel> readModelFactory, ILog log) : base(log)
 {
     _client           = client;
     _readModelFactory = readModelFactory;
 }