我有一些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版本
肯
答案 0 :(得分:1)
Rebus有一个工作单元机制,您应该将会话提交操作挂钩到 - 使用
执行此操作Configure.With(...)
.(...)
.Events(e => e.AddUnitOfWorkManager(...))
.(...)
在那里你可以提供完成工作的uow经理。工作单元的工作是创建一个IUnitOfWork
,您可以在其中调用会话的伴随事务的提交和回滚。
我希望这是有道理的:)