问题描述
我正在尝试实现基于 eventstore eventstore.com 的存储库。 Eventstore 正在运行 - 尝试 - 从我的 docker for windows 中使用普通香草。 我正在粗略地关注这里的视频:https://www.youtube.com/watch?v=Sopi-gI5qKU
现在,我对 AppendToStreamAsync 的调用挂了。我不明白为什么。 我做错了什么?
码头工人:
[ 1,12,10:25:43.886,INF] Connection '"external-normal"""' ["172.18.0.1:49020",{508e83cf-f221-4627-84a0-7c32265ee51d}] closed: Success.
[ 1,58,DBG] Persistent subscription lost connection from "172.18.0.1:49020"
[ 1,10:25:44.083,INF] External TCP connection accepted: [normal,"172.18.0.1:49024",L"172.18.0.3:1113",{9b21e221-ea26-43a0-889b-a01f8ee14929}].
[ 1,10:25:45.254,INF] ES "TcpConnection" closed [10:25:45.254: N"172.18.0.1:49024",{9b21e221-ea26-43a0-889b-a01f8ee14929}]:Received bytes: 153,Sent bytes: 0
[ 1,{9b21e221-ea26-43a0-889b-a01f8ee14929}]:Send calls: 0,callbacks: 0
[ 1,{9b21e221-ea26-43a0-889b-a01f8ee14929}]:Receive calls: 2,callbacks: 2
[ 1,{9b21e221-ea26-43a0-889b-a01f8ee14929}]:Close reason: [Success] "Socket closed"
[ 1,10:25:45.255,INF] Connection '"external-normal"""' ["172.18.0.1:49024",{9b21e221-ea26-43a0-889b-a01f8ee14929}] closed: Success.
[ 1,DBG] Persistent subscription lost connection from "172.18.0.1:49024"
[Fact(Timeout = 20000)]
public async Task ThatStoredEventsCanBeRehydrated()
{
var settings = ConnectionSettings.Create()
.Keepreconnecting()
.SetGossipTimeout(TimeSpan.FromMilliseconds(500))
.SetGossipSeedEndPoints(
new IPEndPoint(IPAddress.Loopback,2113)
)
.SetDefaultUserCredentials(new UserCredentials("admin","changeit"));
var connection = EventStoreConnection.Create(settings,new IPEndPoint(IPAddress.Loopback,1113));
await connection.ConnectAsync();
var aggregateId = Guid.NewGuid();
var list = new List<IEvent>()
{
new AccountCreatedEvent(aggregateId,"Eric"),new FundsDepositedEvent(aggregateId,150),100),new FundsWithdrawnEvent(aggregateId,25),};
foreach (var ev in list)
{
var json = JsonConvert.SerializeObject(ev,new JsonSerializerSettings {TypeNameHandling = TypeNameHandling.None});
var payload = Encoding.UTF8.GetBytes(json);
var eventStoreDataType = new EventData(Guid.NewGuid(),ev.GetType().Name,true,payload,null);
await connection.AppendToStreamAsync(Infrastructure.DataStorage.EventStore.StreamId(aggregateId),ExpectedVersion.Any,eventStoreDataType);
}
解决方法
尽管您在不安全模式下运行 ESDB,但默认情况下客户端尝试通过 TCP 使用 TLS 连接,但失败了。
你可以简单地使用这条线连接,它会工作:
var connection =
EventStoreConnection.Create(
"ConnectTo=tcp://localhost:1113; UseSslConnection=false;"
);
请记住,TCP 协议是旧协议,将在某个时候逐步淘汰。我强烈建议只使用 gRPC 客户端。