【问题标题】:NServiceBus Data saved but no saga savedNServiceBus 数据已保存但未保存 saga
【发布时间】:2018-01-26 11:16:26
【问题描述】:

我们使用 NServiceBus 4.6.5 和 Oracle 数据库,对于特定请求,数据会间歇性地保存到我们的数据库中,但相应的 sagaData 不会保存到数据库中。

我查看了日志,找不到解释。

如果您需要我在这里发布更多信息,请告诉我,因为我不知道从哪里开始。

谢谢, 米格尔

EDIT1:我们的 sagas 被保存到大多数消息的数据库中, 这只是针对正在发生的特定消息。

它是间歇性发生的(仅发生在某些消息中 类型)。

并且该消息类型的正常 CRUD 操作被持久化, 只是 SagaData 不是)。

也许分布式事务协调器有问题,或者是 NServiceBus 4.6.5 的错误?

EDIT2: The code is a little offuscated:
public partial class MySaga : IHandleMessages<IAddMyCommand>
{
    public void Handle(IAddMyCommand cmd) {
        ...
        cmd.ExternalCombinedIdentifier = ...;
        Data.ExternalCombinedIdentifier = cmd.ExternalCombinedIdentifier;
        ...
        var myId = SagaUtilities.GetById(cmd.ExternalCombinedIdentifier, ...);
        ...
        var response = Repository.AddObject(...);
        ...
        Data.MyData.Add(new MyData { ... MyId = response.MyId, Timestamp = response.Timestamp, ... });
        ...
    }
    ...
[SagaIndex("ExternalCombinedIdentifier")]
public class MySagaData : IContainSagaData
{

    public long ExternalCombinedIdentifier { get; set; }

    ...
}

编辑 3:我们有一个主服务器和 2 个工作服务器。可能是这样 1 服务器中的 SagaData 与中的 SagaData 不同步 另一个服务器?我们将 SagaData 持久化到 Oracle。

NServiceBus如何保证我们情况下的SagaData是 在 3 个服务器(Master 和 Workers)中同步?

【问题讨论】:

标签: nservicebus saga


【解决方案1】:

在持久化 saga 数据时,您需要具备一些元素。包含 saga 实现的类应该继承自 Saga 基类。为此,您需要指定将使用持久层存储的自定义类(下例中为 YourSagaDataClass):

public class MySagaClass : Saga<YourSagaDataClass>

YourSagaDataClass 必须实现 IContainSagaData 接口,因为它将用于持久化 saga 数据,并将消息处理与其正确的 saga 相关联,通常使用 CorrelationId。实际上,实现 IContainSagaData 接口为您提供了以下三个属性:

public Guid Id { get; set; }
public string Originator { get; set; }
public string OriginalMessageId { get; set; }

要在消息或事件处理程序中使用持久化 saga 数据,请使用 Data 作为对持久化 saga 数据的引用:

Data.OrderId = message.OrderId;

使用 NServiceBus 持久化 saga 数据时,还要确保您已指定 saga persistence.

可以在此处找到来自特定软件本身的更多信息: https://docs.particular.net/nservicebus/sagas/?version=core_4

【讨论】:

  • 我更好地解释了我的问题。你能回顾一下吗?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
相关资源
最近更新 更多