Rita 是一个构建在NATS之上的各种以事件为中心和反应式抽象的工具包。
主要功能:
- 类型注册表
- 从字符串到类型的透明映射
- 支持标注类型、事件、状态、命令等。
- 事件存储eventstore
- JetStream 上的层用于事件存储
- 来自 nats 消息的编码器到/解码器
- 具有事件存储语义的简单 api
- 每个商店映射到一个流
- 事件源状态
- 事件源状态表示模型
- 用户实现类型的接口
- 映射到一个主题
- 快照或状态达到某个序列以进行按需更新
尽管事件溯源涉及将状态转换建模和持久化为事件,但我们仍然需要派生状态以便在收到命令时做出决策。
从根本上说,我们有一个状态模型,然后我们需要在给定每个事件的情况下进化状态。我们可以将其建模为 Go 中的接口。
type Evolver interface { |
一个实现将如下所示:
type Order struct { |
func (o *Order) Evolve(event *Event) error { |
给定这个模型,为了方便,我们可以使用Evolveon 方法。EventStore
var order Order |
这也适用于使用主题通配符的横切状态(所有订单)。
var orderList OrderList |