我正在使用.Net 的事件存储客户端,并且正在努力寻找使用该客户端的正确方法。当我在 .Net 依赖注入中将客户端注册为单例并在较长时间内运行我的应用程序时,内存使用量会随着每次订阅而不断增长。
我通过以下方式创建并注册客户端。可以在此处找到遇到该问题的完整最小应用程序。
var esdbConnectionString = configuration.GetValue("ESDB_CONNECTION_STRING", "esdb://admin:changeit@localhost:2113?tls=false");
var eventStoreClientSettings = EventStoreClientSettings.Create(esdbConnectionString);
var eventStoreClient = new EventStoreClient(eventStoreClientSettings);
services.AddSingleton(eventStoreClient);
Run Code Online (Sandbox Code Playgroud)
我的应用程序在很长一段时间内有大量短流
重现该行为的步骤:
我如何创建和订阅流:
var streamName = CreateStreamName();
var payload = new PingEvent { StreamNr = _currentStreamNumber };
var eventData = new EventData(Uuid.NewUuid(), typeof(PingEvent).Name, EventSerialization.SerializeEventData(payload));
await _client.AppendToStreamAsync(streamName, StreamState.Any, new[] { eventData });
var streamCancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMinutes(30));
await _client.SubscribeToStreamAsync(streamName, FromStream.Start, async (sub, evnt, token) =>
{
if (evnt.Event.EventType …Run Code Online (Sandbox Code Playgroud)