コード例 #1
0
        //write events from here
        static void Main(string[] args)
        {
            const string textMessageStream = "text-message";

            var service = new EventStoreService(Config.IpAddress, Config.DefaultPort);

           

            var people = new List<string> {"jim", "mike", "susie"};

            //simulate already subscribed. This information would come from the actual message in the form of it not being the first
            //phase transition or something else that tells us that this is not the first message related to an individuals
            var alreadySubscribed = new List<string>();

            var count = 0;
            using (service)
            {
                while (true)
                {
                    count++;
                    var person = people[count%3];
                    var model = BuildTextMessage(person);
                    var metadata = new Metadata { ClassVersion = 1 };

                    var subStream = $"{textMessageStream}-{person}";

                    if (alreadySubscribed.Contains(person) == false)
                    {
                        service.SubscribeToStream(subStream, (s, @event) =>
                        {
                            var metaData = service.GetStreamMetaData<Counter>(subStream);
                            var textMessage = JsonConvert.DeserializeObject<TextMessageSent>(Utility.BytesToString(@event.Event.Data));
                            Console.WriteLine($"Substream text message received for stream: {subStream}. Data {textMessage.Sender} - {textMessage.Message}");
                            Console.WriteLine($"Count is {metaData.Count}");
                            metaData.Count++;
                            service.SetMetaData(subStream, metaData);
                        });
                        alreadySubscribed.Add(person);
                    }

                    service.WriteToStreamAsync(textMessageStream, "messageSend", model, metadata);
                    service.WriteToStreamAsync(subStream, "messageSend", model, metadata);


                    Thread.Sleep(1000);
                }
            }
        }