有没有办法启动 Windows 中提供的 EventStore(根本不使用 docker)?
Is there a way to start the EventStore served in Windows (without using docker at all)?
我在玩EventStore。作为 .NET 用户,我更喜欢 Windows 而不是 OS,只是我有家庭版。为了安装 Docker,我需要 Windows 专业版 - 但我没有...它超出了我的预算。
无论如何,我一直尝试安装(通过 Chocolatey)并且我成功了。我该如何开始呢?我在文档中找不到命令。
我有这个代码:
var settings = new EventStoreClientSettings {
ConnectivitySettings = {
Address = new Uri("http://localhost:2113")
}
};
var client = new EventStoreClient(settings);
取自 here.
我遇到错误“启动 gRPC 调用时出错 - 无法创建连接”。
我怀疑我需要启动服务器。但是怎么办?即使我使用 docker,我仍然无法使用命令行启动服务器,因为我的经验告诉我在这种情况下我会这样做。
我很乐意联系他们的支持,但我只是在探索 - 我没有该软件的许可证。
通过 chocolatey 安装后,您可以使用以下命令启动 EventStoreDB
EventStore.ClusterNode.exe --db ./db --log ./logs
但是,如果您想通过 HTTP 访问它(如示例中所示),那么您还需要添加 --insecure
标志
EventStore.ClusterNode.exe --db ./db --log ./logs --insecure
对于 GRPC
从 https://www.eventstore.com/downloads 下载 zip 文件并解压到本地文件夹
或者从 choco
安装 eventstore-oss
对于版本 20.10 运行
EventStore.ClusterNode.exe --insecure --run-projections=all --start-standard-projections --enable-atom-pub-over-http
在浏览器中打开 localhost:2113
并确认数据库是 运行ning
对 gRPC 客户端使用连接字符串 esdb://localhost:2113?Tls=false
。
.net 3.1 控制台应用程序
es-connect.csproj
文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EventStore.Client.Grpc.Streams" Version="20.6.1" />
</ItemGroup>
</Project>
main.cs
文件
using EventStore.Client;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace connections
{
class Program
{
public static async Task Main()
{
var settings = EventStoreClientSettings.Create("esdb://localhost:2113?tls=false");
var client = new EventStoreClient(settings);
var itemId = Guid.NewGuid();
var streamName = $"item-{itemId}";
var eventData1 = new EventData(
Uuid.NewUuid(), //event id
"ItemCreated", //event type name
Encoding.UTF8.GetBytes($@"{{""item-id"": ""{itemId}"", ""a-starting-value"": ""foo""}}"), //event data
Encoding.UTF8.GetBytes($@"{{""written-by"": ""me"", ""written-at"":""{DateTime.UtcNow}""}}") // event metadata
);
var eventData2 = new EventData(
Uuid.NewUuid(), //event id
"ItemChanged", //event type name
Encoding.UTF8.GetBytes($@"{{""item-id"": ""{itemId}"", ""a-new-value"": ""foo""}}"), //event data
Encoding.UTF8.GetBytes($@"{{""written-by"": ""me"", ""written-at"":""{DateTime.UtcNow}""}}") // event metadata
);
var rslt = await client.AppendToStreamAsync(
streamName,
StreamState.NoStream,
new List<EventData> { eventData1,eventData2 });
Console.WriteLine($"Wrote events through number {rslt.NextExpectedStreamRevision} at {rslt.LogPosition}");
Console.WriteLine();
var events = client.ReadStreamAsync(Direction.Forwards, streamName, StreamPosition.Start, 100);
await foreach (var @event in events)
{
Console.WriteLine($"Event Postion:{@event.OriginalEvent.Position}");
Console.WriteLine($"Event Number:{@event.OriginalEventNumber}");
Console.WriteLine($"Event Id:{@event.OriginalEvent.EventId}");
Console.WriteLine($"data:{Encoding.UTF8.GetString(@event.Event.Data.Span)}");
Console.WriteLine($"metadata:{Encoding.UTF8.GetString(@event.Event.Metadata.Span)}");
Console.WriteLine();
}
}
}
}
浏览至 http://localhost:2113/web/index.html#/streams
以确认写入的流。
单击流详细信息的链接
例如http://localhost:2113/web/index.html#/streams/item-{item id}
和 http://localhost:2113/web/index.html#/streams/item-{item id}[=20=]
第一个事件
项目类别位于 http://localhost:2113/web/index.html#/streams/$ce-item
http://localhost:2113/web/index.html#/streams/$et-ItemCreated
处的 ItemCreated 事件
http://localhost:2113/web/index.html#/streams/$et-ItemChanged
处的 ItemChanged 事件
我在玩EventStore。作为 .NET 用户,我更喜欢 Windows 而不是 OS,只是我有家庭版。为了安装 Docker,我需要 Windows 专业版 - 但我没有...它超出了我的预算。
无论如何,我一直尝试安装(通过 Chocolatey)并且我成功了。我该如何开始呢?我在文档中找不到命令。
我有这个代码:
var settings = new EventStoreClientSettings {
ConnectivitySettings = {
Address = new Uri("http://localhost:2113")
}
};
var client = new EventStoreClient(settings);
取自 here.
我遇到错误“启动 gRPC 调用时出错 - 无法创建连接”。
我怀疑我需要启动服务器。但是怎么办?即使我使用 docker,我仍然无法使用命令行启动服务器,因为我的经验告诉我在这种情况下我会这样做。
我很乐意联系他们的支持,但我只是在探索 - 我没有该软件的许可证。
通过 chocolatey 安装后,您可以使用以下命令启动 EventStoreDB
EventStore.ClusterNode.exe --db ./db --log ./logs
但是,如果您想通过 HTTP 访问它(如示例中所示),那么您还需要添加 --insecure
标志
EventStore.ClusterNode.exe --db ./db --log ./logs --insecure
对于 GRPC 从 https://www.eventstore.com/downloads 下载 zip 文件并解压到本地文件夹 或者从 choco
安装eventstore-oss
对于版本 20.10 运行
EventStore.ClusterNode.exe --insecure --run-projections=all --start-standard-projections --enable-atom-pub-over-http
在浏览器中打开 localhost:2113
并确认数据库是 运行ning
对 gRPC 客户端使用连接字符串 esdb://localhost:2113?Tls=false
。
.net 3.1 控制台应用程序
es-connect.csproj
文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EventStore.Client.Grpc.Streams" Version="20.6.1" />
</ItemGroup>
</Project>
main.cs
文件
using EventStore.Client;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace connections
{
class Program
{
public static async Task Main()
{
var settings = EventStoreClientSettings.Create("esdb://localhost:2113?tls=false");
var client = new EventStoreClient(settings);
var itemId = Guid.NewGuid();
var streamName = $"item-{itemId}";
var eventData1 = new EventData(
Uuid.NewUuid(), //event id
"ItemCreated", //event type name
Encoding.UTF8.GetBytes($@"{{""item-id"": ""{itemId}"", ""a-starting-value"": ""foo""}}"), //event data
Encoding.UTF8.GetBytes($@"{{""written-by"": ""me"", ""written-at"":""{DateTime.UtcNow}""}}") // event metadata
);
var eventData2 = new EventData(
Uuid.NewUuid(), //event id
"ItemChanged", //event type name
Encoding.UTF8.GetBytes($@"{{""item-id"": ""{itemId}"", ""a-new-value"": ""foo""}}"), //event data
Encoding.UTF8.GetBytes($@"{{""written-by"": ""me"", ""written-at"":""{DateTime.UtcNow}""}}") // event metadata
);
var rslt = await client.AppendToStreamAsync(
streamName,
StreamState.NoStream,
new List<EventData> { eventData1,eventData2 });
Console.WriteLine($"Wrote events through number {rslt.NextExpectedStreamRevision} at {rslt.LogPosition}");
Console.WriteLine();
var events = client.ReadStreamAsync(Direction.Forwards, streamName, StreamPosition.Start, 100);
await foreach (var @event in events)
{
Console.WriteLine($"Event Postion:{@event.OriginalEvent.Position}");
Console.WriteLine($"Event Number:{@event.OriginalEventNumber}");
Console.WriteLine($"Event Id:{@event.OriginalEvent.EventId}");
Console.WriteLine($"data:{Encoding.UTF8.GetString(@event.Event.Data.Span)}");
Console.WriteLine($"metadata:{Encoding.UTF8.GetString(@event.Event.Metadata.Span)}");
Console.WriteLine();
}
}
}
}
浏览至 http://localhost:2113/web/index.html#/streams
以确认写入的流。
单击流详细信息的链接
例如http://localhost:2113/web/index.html#/streams/item-{item id}
和 http://localhost:2113/web/index.html#/streams/item-{item id}[=20=]
第一个事件
项目类别位于 http://localhost:2113/web/index.html#/streams/$ce-item
http://localhost:2113/web/index.html#/streams/$et-ItemCreated
处的 ItemCreated 事件
http://localhost:2113/web/index.html#/streams/$et-ItemChanged