我有一些RebusHandlers:
public class CastleRebusHandler : IHandleMessages<CastleRebusMessage>
{
... (ctor injections from windsor)
public void Handle(CastleRebusMessage message)
{
var myPoco = _session.Get<MyPoco>(1);
myPoco.MethodThatRaiseDomainEvent();
}
}
方法MethodThatRaiseDomainEvent
将域事件添加到内部列表中,如下所述。
我在NHibernate中设置了一些IPostUpdateEventListener
,它将通过域事件的集合运行并调度每个事件。我做了一个类来控制ISession
对BeforeMessage和AfterMessage事件的Rebus。
域调度事件代码在Rebus的NHibernate = AfterMessage
的事件侦听器中运行(如链接中所述)。问题是如果这里发生异常怎么办?
如何将消息移动到Rebus的错误队列中以表示失败?
我们使用的是0.83版本
肯Rebus有一个工作单元机制,你可以使用
Configure.With(...)
.(...)
.Events(e => e.AddUnitOfWorkManager(...))
.(...)
,您可以在其中提供执行该工作的当前管理器。工作管理器的工作单元是创建一个IUnitOfWork
,在这里您可以调用会话伴随事务的提交和回滚。
我希望这是有意义的:)