问题标签 [eventstoredb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
47 浏览

event-sourcing - 重新创建硬删除的流

我不小心使用请求标头从EventStore硬删除了一个流。ES-HardDelete当我尝试再次创建它时,它失败了410 Permanently Deleted

我尝试删除 EventStore 数据库和日志文件夹。没运气。还尝试删除整个 EventStore 并安装新的,但仍然无法创建相同的流。

有什么办法可以让我再次创建具有相同名称的流?

0 投票
3 回答
1336 浏览

events - CQRS/ES 架构上的补偿事件

所以,我正在做一个 CQRS/ES 项目,在这个项目中,我们对如何处理在其他架构中很容易处理的琐碎问题有一些疑问

我的情况如下:

我有一个客户 CRUD REST API,每个客户都有唯一的文档(编号),所以当我注册一个新客户时,我必须验证是否有另一个客户使用该文档以避免重复,但是当涉及到 CQRS/ ES 架构最终实现了一致性,我发现这种验证很难解决。

需要注意的是,我的问题不是跨微服务,而是在同一个微服务的命令应用和查询应用之间。

我们也在使用eventstore

我目前的解决方案:

所以我今天要做的是,在我的命令应用程序中,在保存 CustomerCreated 事件之前,我询问查询应用程序(使用 PostgreSQL)是否有该文档的客户,如果没有,我允许该事件继续进行。但这并不能保证 100%,对吧?因为我的查询可以去同步,所以我不能 100% 信任它。那是我的第二次验证开始的时候,当我的查询应用程序正在处理事件并将它们保存到我的 PostgreSQL 时,我再次检查该文档是否有客户,如果有,我拒绝该事件并发出一个补偿事件以撤消/cancel/inactivate 使用重复文档的客户,从而在 eventstore 上完成该客户流。

尽管这可行,但这里有两件事困扰着我,第一件事是我的命令应用程序依赖于查询应用程序,所以如果我的查询应用程序关闭,我的命令就会受到影响(今天,如果查询是,我只是在验证时返回 false下降但仍然......)第二件事是,查询/读取模型真的应该能够发出事件吗?如果是这样,正确的做法是什么?该命令是否应该为此提供某种 API?或者查询是否应该使用一些公共共享库将事件直接发送到事件存储?如果我有多个视图/阅读?我应该选择哪一个来处理这个?

真的希望有人能阐明这些问题并帮助我解决这些问题。

0 投票
1 回答
131 浏览

domain-driven-design - 从内部事件处理程序加载事件?

我们有一个使用 GetEventStore 的事件源系统,其中命令端和非规范化程序在两个单独的进程中运行。

我有一个事件处理程序,它作为用户保存应用程序(ApplicationSaved 事件)的结果发送电子邮件,我需要更改它以便给给定应用程序只发送一次电子邮件。

我可以看到几种方法,但我不确定哪种方法是正确的。

1) 我可以在读取存储中查看是否有匹配的应用程序,但是当我的电子邮件处理程序处理事件时,不能保证数据会在那里。

2)我可以将一些东西附加到我的 ApplicationSaved 事件中,Revision这可能会在每次后续保存时增加。然后我只发送电子邮件,如果Revision是 1。

3)在我的事件处理程序中,我可以使用存储库从我的事件存储中为匹配的客户加载事件,并建立一个与我域中的聚合分开的聚合。它可以包含我可以用来做出决定的应用程序列表。

我的想法:

1)这似乎是不行的,因为数据可能在也可能不在读取存储中

2)如果数据可以从事件流中派生,那么它不需要在事件本身上。

3)我倾向于这个,但是读和写之间应该有一个明确的分离,这感觉像是违反了。这是允许的吗?

0 投票
0 回答
34 浏览

eventstoredb - 如何通过 API 更改 byCategory 投影?

我想将我的$byCategory系统投影设置lastEventStore。有没有办法自动做到这一点?通过启动配置还是 API 调用?

它可以在 localhost 的这个 url 下找到:

http://localhost:2113/web/index.html#/projections/http://localhost:2113/projection/ $by_category

这是编辑屏幕的样子:

在此处输入图像描述

0 投票
2 回答
465 浏览

domain-driven-design - 事件溯源中是否应该查询最新的事件版本?

我正在为教育目的开发一个简单的基于 DDD + 事件源的应用程序。

为了在存储到事件存储之前设置事件版本,我应该查询事件存储,但我的直觉告诉这是错误的,因为它会导致并发问题。

我错过了什么吗?

0 投票
1 回答
110 浏览

event-sourcing - EventStore 投影中的状态可以有多大?

在 eventstore 中使用 JavaScript API 创建投影时,状态对象可以变成多大?这是受限于机器上的内存量还是保存到磁盘?我认为后者在你可以拥有多大的州方面会更有影响力。

0 投票
1 回答
324 浏览

projection - 合并事件存储中的两个流的投影

我正在尝试使用创建最简单的投影fromStreams,代码保存得很好,但流mergeStream0不存在

0 投票
3 回答
4084 浏览

kubernetes - 在 Kubernetes 内部使用“kubectl delete pods X”

我们在 gcloud 上使用 >1.8 版本的 k8s。不幸的是,EventStore 会停止推送数据,直到重新启动。因此,我们希望kubectl --namespace=$NAMESPACE delete pod eventstore-0每 6 小时运行一次。因此,我们有一个 cron 工作,例如:

但是,这似乎扩展为kubectl get pods ...,通过管道传输| { ... },这导致"/bin/sh: syntax error: unexpected end of file (expecting "}")脚本失败。

如何编写命令以按计划删除 pod

0 投票
1 回答
1160 浏览

c# - 使用 Event Store Client API (.NET),我如何写入流并将一个事件链接到另一个?

我已经设置了Event Store,并且可以愉快地将事件写入流、订阅和读取历史事件,一切正常。

我可以看到ResolvedEvent传递给我的订阅处理程序方法的那个有一个Link属性,但我想知道当我写入流时,我如何“设置”这个属性?

我尝试设置各种元数据属性(使用 JSON 表示法),查看源代码,但没有找到任何可行的方法。

我可能会以错误的方式解决这个问题,以及我正在尝试做的事情(将事件写入流,然后将第二个事件链接到第一个事件,以便稍后找到“回复”)应该以另一种方式完成。

0 投票
1 回答
283 浏览

.net - Azure WebJobs 中的 EventStore C# 客户端

我正在为 Net 4.6.1 和 EventStore.Client 4.1.1 使用 WebJob 模板

在 Program.cs 中

我在 Functions 类中创建了一个公共函数,例如

我正在使用持久连接,这可以作为普通的控制台应用程序正常工作。当我尝试让它作为 WebJob 长时间运行时,EvernStore.Client 将连接,有时可能会收到 1 个事件,然后断开连接。

关闭原因:[成功] 客户端请求关闭连接。

该代码在使用中,例如

我使用 while(true) 来阻塞线程。这作为一个普通的控制台应用程序工作。

我需要专门为 WebJobs 做些什么来防止连接中断吗?如果我在本地或云中运行它,也会发生同样的事情。

我只是想找到一种使用 Azure 方式订阅事件存储事件的方法,以便我们可以对其进行监控。我这样做可能不正确吗?如何在 Azure 中获得持久订阅?