NHibernate 中 Rebus 和事件监听器的域事件

Domain events with Rebus and eventlisteners in NHibernate

我有一些 RebusHandlers,例如:

public class CastleRebusHandler : IHandleMessages<CastleRebusMessage>
{
    ... (ctor injections from windsor)

    public void Handle(CastleRebusMessage message)
    {
        var myPoco = _session.Get<MyPoco>(1);
        myPoco.MethodThatRaiseDomainEvent();
    }
}

方法 MethodThatRaiseDomainEvent 将域事件添加到内部列表,如 here 所述。

我在 NHibernate 中设置了一些 IPostUpdateEventListener这将 运行 通过域事件的集合并分派每个。我制作了一个 class 来控制 ISession 用于 BeforeMessage 和 AfterMessage 事件的 Rebus。

域调度事件代码运行(如link中所述),在Rebus NHibernate = AfterMessage的事件监听器中。问题是如果这里出现异常怎么办?

如何将消息移至 Rebus 的错误队列以指示失败?

我们使用的是0.83版本

Rebus 有一个工作单元机制,您应该将会话提交操作挂接到其中 - 您可以使用

Configure.With(...)
    .(...)
    .Events(e => e.AddUnitOfWorkManager(...))
    .(...)

您可以在哪里提供执行工作的 uow 管理器。工作管理器的工作单元是创建一个 IUnitOfWork,您可以在其中调用会话伴随事务的提交和回滚。

我希望这是有道理的:)