Event Store – A walk through (using .NET)

I saw this really amazing product Event Store by http://geteventstore.com/ so thought i should try it. In this post i set up a store and read and write event to a stream so lets start

Step 1: Download event store for windows
http://geteventstore.com/downloads/

Step 2: Install event store
To do that unzip the downloaded zip file and open the same directory in command with admin right. Then run this command
EventStore.ClusterNode.exe –db ./db –log ./logs

Step 3: Open event store

In browser open thisĀ http://127.0.0.1:2113/

Step 4: Create a console application in VS

Step 5: Add a nuget reference

event store nuget

Step 6: Add a new class EventStoreServer and paste this

public class EventStoreServer
{
   private IEventStoreConnection _connection;
   private void Connect()
   {
      _connection = EventStoreConnection.Create(new IPEndPoint(IPAddress.Loopback, 1113));
      _connection.ConnectAsync().Wait();
   }

   public void AddEvent(string ccceventstream)
   {
      Connect();
      var event1 = new EventData(Guid.NewGuid(), "1", false,  Encoding.UTF8.GetBytes("some data"),  Encoding.UTF8.GetBytes("some metadata"));
      var event2 = new EventData(Guid.NewGuid(), "2", false, Encoding.UTF8.GetBytes("some data"),Encoding.UTF8.GetBytes("some metadata"));
      var event3 = new EventData(Guid.NewGuid(), "3", false,Encoding.UTF8.GetBytes("some data"),Encoding.UTF8.GetBytes("some metadata"));
      var event4 = new EventData(Guid.NewGuid(), "4", false,Encoding.UTF8.GetBytes("some data"),Encoding.UTF8.GetBytes("some metadata"));

      _connection.AppendToStreamAsync(ccceventstream, ExpectedVersion.Any, new EventData [] {event1,event2,event3,event4}).Wait();
   }

   public void ReadEvent(string ccceventstream)
   {
      Connect();
      var streamEvents = _connection.ReadStreamEventsForwardAsync(ccceventstream, 0, ccceventstream.Count(), false).Result;

      foreach (var events in streamEvents.Events)
      {
         Console.WriteLine("Read event with data: {0}, metadata: {1}", Encoding.UTF8.GetString(events.Event.Data),Encoding.UTF8.GetString(events.Event.Metadata));
      }

      Console.ReadLine();
   }
}