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
,您可以在其中调用会话伴随事务的提交和回滚。
我希望这是有道理的:)
我有一些 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
,您可以在其中调用会话伴随事务的提交和回滚。
我希望这是有道理的:)