Event Store - Appending to a stream in a single write with .NET API

要使用 Event Store .NET API 發送 Event 給 Event Store,可以先進行 Event Store 的連線。


連線後設定 EventData。

1
2
3
4
5
6
7
8
...
var typeName = "MyType";
var data = new {
Msg="Hello world!"
};
var jsonData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data));
var eventData = new EventData(Guid.NewGuid(), typeName, true, jsonData, null);
...


呼叫 Connection.AppendToStreamAsync 將 EventData 送入 Event Store 指定的 Stream (ExpectedVersion 可用來決定是否要判斷 Stream 是否存在)。

1
2
3
...
conn.AppendToStreamAsync(streamName, ExpectedVersion.Any, eventData);
...


程式寫起來會像下面這樣:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using EventStore.ClientAPI;
using Newtonsoft.Json;
using System;
using System.Text;
...
var connectionName = "MyConsole";
var connectionString = "ConnectTo=tcp://admin:changeit@localhost:1113; HeartBeatTimeout=500";

using (var conn = EventStoreConnection.Create(connectionString, connectionName))
{
conn.ConnectAsync().Wait();

var streamName = "MyStream";
var typeName = "MyType";
var data = new {
Msg="Hello world!"
};
var jsonData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data));
var eventData = new EventData(Guid.NewGuid(), typeName, true, jsonData, null);
conn.AppendToStreamAsync(streamName, ExpectedVersion.Any, eventData).Wait();
}
...


運行起來後可透過 Web interface 找到對應的 Stream。


對應的 Event。