问题标签 [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.
event-sourcing - 重新创建硬删除的流
我不小心使用请求标头从EventStore硬删除了一个流。ES-HardDelete
当我尝试再次创建它时,它失败了410 Permanently Deleted
。
我尝试删除 EventStore 数据库和日志文件夹。没运气。还尝试删除整个 EventStore 并安装新的,但仍然无法创建相同的流。
有什么办法可以让我再次创建具有相同名称的流?
events - CQRS/ES 架构上的补偿事件
所以,我正在做一个 CQRS/ES 项目,在这个项目中,我们对如何处理在其他架构中很容易处理的琐碎问题有一些疑问
我的情况如下:
我有一个客户 CRUD REST API,每个客户都有唯一的文档(编号),所以当我注册一个新客户时,我必须验证是否有另一个客户使用该文档以避免重复,但是当涉及到 CQRS/ ES 架构最终实现了一致性,我发现这种验证很难解决。
需要注意的是,我的问题不是跨微服务,而是在同一个微服务的命令应用和查询应用之间。
我们也在使用eventstore。
我目前的解决方案:
所以我今天要做的是,在我的命令应用程序中,在保存 CustomerCreated 事件之前,我询问查询应用程序(使用 PostgreSQL)是否有该文档的客户,如果没有,我允许该事件继续进行。但这并不能保证 100%,对吧?因为我的查询可以去同步,所以我不能 100% 信任它。那是我的第二次验证开始的时候,当我的查询应用程序正在处理事件并将它们保存到我的 PostgreSQL 时,我再次检查该文档是否有客户,如果有,我拒绝该事件并发出一个补偿事件以撤消/cancel/inactivate 使用重复文档的客户,从而在 eventstore 上完成该客户流。
尽管这可行,但这里有两件事困扰着我,第一件事是我的命令应用程序依赖于查询应用程序,所以如果我的查询应用程序关闭,我的命令就会受到影响(今天,如果查询是,我只是在验证时返回 false下降但仍然......)第二件事是,查询/读取模型真的应该能够发出事件吗?如果是这样,正确的做法是什么?该命令是否应该为此提供某种 API?或者查询是否应该使用一些公共共享库将事件直接发送到事件存储?如果我有多个视图/阅读?我应该选择哪一个来处理这个?
真的希望有人能阐明这些问题并帮助我解决这些问题。
domain-driven-design - 从内部事件处理程序加载事件?
我们有一个使用 GetEventStore 的事件源系统,其中命令端和非规范化程序在两个单独的进程中运行。
我有一个事件处理程序,它作为用户保存应用程序(ApplicationSaved 事件)的结果发送电子邮件,我需要更改它以便给给定应用程序只发送一次电子邮件。
我可以看到几种方法,但我不确定哪种方法是正确的。
1) 我可以在读取存储中查看是否有匹配的应用程序,但是当我的电子邮件处理程序处理事件时,不能保证数据会在那里。
2)我可以将一些东西附加到我的 ApplicationSaved 事件中,Revision
这可能会在每次后续保存时增加。然后我只发送电子邮件,如果Revision
是 1。
3)在我的事件处理程序中,我可以使用存储库从我的事件存储中为匹配的客户加载事件,并建立一个与我域中的聚合分开的聚合。它可以包含我可以用来做出决定的应用程序列表。
我的想法:
1)这似乎是不行的,因为数据可能在也可能不在读取存储中
2)如果数据可以从事件流中派生,那么它不需要在事件本身上。
3)我倾向于这个,但是读和写之间应该有一个明确的分离,这感觉像是违反了。这是允许的吗?
eventstoredb - 如何通过 API 更改 byCategory 投影?
我想将我的$byCategory
系统投影设置last
为EventStore。有没有办法自动做到这一点?通过启动配置还是 API 调用?
它可以在 localhost 的这个 url 下找到:
http://localhost:2113/web/index.html#/projections/http://localhost:2113/projection/ $by_category
这是编辑屏幕的样子:
domain-driven-design - 事件溯源中是否应该查询最新的事件版本?
我正在为教育目的开发一个简单的基于 DDD + 事件源的应用程序。
为了在存储到事件存储之前设置事件版本,我应该查询事件存储,但我的直觉告诉这是错误的,因为它会导致并发问题。
我错过了什么吗?
event-sourcing - EventStore 投影中的状态可以有多大?
在 eventstore 中使用 JavaScript API 创建投影时,状态对象可以变成多大?这是受限于机器上的内存量还是保存到磁盘?我认为后者在你可以拥有多大的州方面会更有影响力。
projection - 合并事件存储中的两个流的投影
我正在尝试使用创建最简单的投影fromStreams
,代码保存得很好,但流mergeStream0
不存在
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?
c# - 使用 Event Store Client API (.NET),我如何写入流并将一个事件链接到另一个?
我已经设置了Event Store,并且可以愉快地将事件写入流、订阅和读取历史事件,一切正常。
我可以看到ResolvedEvent
传递给我的订阅处理程序方法的那个有一个Link
属性,但我想知道当我写入流时,我如何“设置”这个属性?
我尝试设置各种元数据属性(使用 JSON 表示法),查看源代码,但没有找到任何可行的方法。
我可能会以错误的方式解决这个问题,以及我正在尝试做的事情(将事件写入流,然后将第二个事件链接到第一个事件,以便稍后找到“回复”)应该以另一种方式完成。
.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 中获得持久订阅?