【发布时间】: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)中同步?
【问题讨论】:
-
这个问题是这个问题的双重帖子:discuss.particular.net/t/data-saved-but-no-saga-saved/338
标签: nservicebus saga