如何使用 JournaledGrain 进行事件溯源

How to use JournaledGrain for event sourcing

我是奥尔良女士的初学者。我想使用 JournaledGrain 向它的监听器发送一个事件。这是我尝试过的。

public class MyJournaledGrain : JournaledGrain<State, Event>, IJournaledGrain
{
    public MyJournaledGrain()
    {


    }

    public void RaiseEvent()
    {

        Trace.WriteLine(" hi ");
        this.RaiseEvent(new Event());
        this.ConfirmEvents();

    }


    protected override void OnStateChanged()
    {
        // some thing ...
        base.OnStateChanged();
    }

    protected override void TransitionState(State state, Event @event)
    {

        base.TransitionState(state, @event);
    }
}

在 OnStateChanged 方法中,我可以获得引发的事件,但发送方和接收方在一个 class 中。我想要 pub/sub 模式之类的东西。奥尔良女士有可能实现这一目标吗? 谢谢

事件溯源和 pub/sub 是两个独立的事物:

  • 事件溯源用于 grain 的状态持久化
  • Pub/sub用于grains之间的消息传递

对于 pub/sub,您需要 Orleans Streams:https://dotnet.github.io/orleans/Documentation/streaming/index.html