gpt4 book ai didi

c# - NHibernate 中 Rebus 和事件监听器的领域事件

转载 作者:行者123 更新时间:2023-11-30 17:41:46 27 4
gpt4 key购买 nike

我有一些 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,它将通过域事件的集合运行并分派(dispatch)每个事件。我创建了一个类来控制 Rebus 在 BeforeMessage 和 AfterMessage 事件上的 ISession

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

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

我们使用的是0.83版本

最佳答案

Rebus 有一个工作单元机制,您应该将 session 提交操作 Hook 到该机制中 - 您可以使用

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

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

我希望这是有道理的:)

关于c# - NHibernate 中 Rebus 和事件监听器的领域事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32456083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com