NHibernate中使用Rebus和eventlisteners的域事件

时间:2015-09-08 11:02:35

标签: c# nhibernate rebus

我有一些RebusHandler,如:

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,它将通过域事件的集合和每个调度。我在BeforeMessage和AfterMessage事件上创建了一个控制ISession Rebus的类。

在Rebus中NHibernate = AfterMessage的事件列表中运行域调度事件代码(如链接中所述)。如果在这里发生异常,问题是什么?

如何将消息移至Rebus的错误队列以发出故障信号?

我们使用的是0.83版本

1 个答案:

答案 0 :(得分:1)

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

执行此操作
Configure.With(...)
    .(...)
    .Events(e => e.AddUnitOfWorkManager(...))
    .(...)

在那里你可以提供完成工作的uow经理。工作单元的工作是创建一个IUnitOfWork,您可以在其中调用会话的伴随事务的提交和回滚。

我希望这是有道理的:)