C# Eventstore:如何正确设置持久订阅客户端?
我正在使用EventStoreDB V20,并试图在本地开发人员机器上设置一个持久订阅。在仪表板上,我可以看到列出的持久订阅,但处理程序从未被调用 我正在使用这些NUGET: 我在docker中运行EventStore:C# Eventstore:如何正确设置持久订阅客户端?,c#,event-sourcing,eventstoredb,C#,Event Sourcing,Eventstoredb,我正在使用EventStoreDB V20,并试图在本地开发人员机器上设置一个持久订阅。在仪表板上,我可以看到列出的持久订阅,但处理程序从未被调用 我正在使用这些NUGET: 我在docker中运行EventStore: docker run --name esdb-node -it -p 2113:2113 -p 1113:1113 -e EVENTSTORE_DEV=true eventstore/eventstore:latest --insecure --run-projections
docker run --name esdb-node -it -p 2113:2113 -p 1113:1113 -e EVENTSTORE_DEV=true eventstore/eventstore:latest --insecure --run-projections=All --enable-atom-pub-over-http
对于附加事件,我执行以下操作:
await eventStoreClient.AppendToStreamAsync(
aggregate.Id.ToString(),
aggregate.Version == 0 ? StreamRevision.None : StreamRevision.FromInt64(aggregate.Version), events);
创建和订阅永久订阅:
var client = new EventStorePersistentSubscriptionsClient(new EventStoreClientSettings {
CreateHttpMessageHandler = () =>
new HttpClientHandler
{
ServerCertificateCustomValidationCallback =
(message, certificate2, x509Chain, sslPolicyErrors) => true // ignore https
},
ConnectivitySettings = new EventStoreClientConnectivitySettings
{
Address = new Uri("http://127.0.0.1:2113?Tls=false&TlsVerifyCert=false")
}});
await client.CreateAsync("all", "TestGroup", new PersistentSubscriptionSettings(startFrom: StreamPosition.End));
await SubscribeAsync(client);
Console.ReadLine();
}
private static Task<PersistentSubscription> SubscribeAsync(EventStorePersistentSubscriptionsClient client)
{
return client.SubscribeAsync("all", "TestGroup",
(subscription, evt, retryCount, cancelToken) =>
{
Console.WriteLine("Received: " + Encoding.UTF8.GetString(evt.Event.Data.Span));
return Task.CompletedTask;
});
}
var client=new EventStorePersistentSubscriptionClient(new EventStoreClientSettings{
CreateHttpMessageHandler=()=>
新型HttpClientHandler
{
ServerCertificateCustomValidationCallback=
(消息、证书2、x509Chain、sslPolicyErrors)=>true//ignore https
},
ConnectivitySettings=neweventstoreclientconnectivitysettings
{
地址=新Uri(“http://127.0.0.1:2113?Tls=false&TlsVerifyCert=false")
}});
等待client.CreateAsync(“all”,“TestGroup”,新的PersistentSubscriptionSettings(startFrom:StreamPosition.End));
等待订阅同步(客户端);
Console.ReadLine();
}
专用静态任务SubscribeAsync(EventStorePersistentSubscriptionsClient客户端)
{
返回client.SubscribeAsync(“全部”、“测试组”,
(订阅、evt、retryCount、cancelToken)=>
{
WriteLine(“接收:”+Encoding.UTF8.GetString(evt.Event.Data.Span));
返回Task.CompletedTask;
});
}
Console.WriteLine
从未被调用。我需要更改什么?一切似乎都设置正确,但我怀疑您是否拥有名为all
的流。如果试图为$all
流创建持久订阅,则不可能。您只能在$all
流上进行后续订阅。您有名为all
的流吗?不,我真的想要$all