问题标签 [saga]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
774 浏览

nservicebus - NserviceBus 未加载现有的传奇数据

我已经使用 nservice bus saga 实现了我的连接器。下面是代码

现在,在我的连接器中,无法在不存在客户端联系人更改消息的情况下创建客户端。

saga 失败的情况:

  1. 当我首先发送客户端图片消息时,它会创建一个新的传奇并存储它。
  2. 然后我发送一条客户端更改消息,它创建另一个 saga 并将其存储,即找不到客户端图片消息创建的 saga
  3. 然后我发送客户联系人更改消息,它以某种方式找到了由客户图片更改创建的传奇,但现在找不到工作人员。

我无法弄清楚为什么会这样。

saga 成功的情况:

  1. 当我首先发送客户端更改消息时,它会创建传奇。
  2. 然后我发送客户端联系人更改消息,它找到了传奇并执行得很好。

谁能解释为什么会发生这种行为。

如果需要更多信息,请告诉我。

谢谢

更新

再次检查我的代码时,我发现了这个问题的原因。我的 ClientChangeMes​​sage 也继承自 IContainSaga 数据(我正在尝试但忘记删除的东西)。删除继承链接后,一切正常。(羞愧地低着头)

0 投票
1 回答
102 浏览

saga - 我可以在 nservicebus sagas 上实现 timetolive 吗?

我有一个涉及 6 个不同端点的传奇,传奇是一种工作流程。无论如何我可以设置一些超时执行,如果这个过程没有结束,我想结束那个传奇并做点什么???

0 投票
1 回答
336 浏览

azure - NServiceBus 传奇未在 azure 上处理消息

我在 azure 云服务上部署 NServiceBus sagas 时遇到了奇怪的行为。他们永远不会收到回复消息,永远不会醒来......虽然如果它在本地部署一切正常,当它在 WebApi 云服务角色上时,sagas 也能正常工作......

这是我的nsb配置

这就是我用于持久化者的配置

NServiceBus.Hosting.Azure、NServiceBus.NHibernate、NServiceBus.Core、NServiceBus.Azure、NServiceBus 所有 v4.0.30319

我正在使用 AzureStorageQueue,而且我确定我已经用正确的 ConfigureMapping 覆盖了 ConfigureHowToFindSaga,并且我正在回复消息,所有文件都正确指定...

我将非常感谢任何想法,谢谢。

0 投票
1 回答
321 浏览

masstransit - Is it possible to lock affinity of a MassTransit saga to a given consumer?

In a case where the steps of a saga relay on local resources (e.g, temp files) from previous steps, is it possible to force those steps to execute on a given consumer (say the one that fired the event which created the saga)?

I can get around this by creating a centralized file store location, but I am just curious if its possible.

0 投票
2 回答
555 浏览

nservicebus - Nservice 巴士传奇订购

我有两个传奇,即客户传奇和客户计费传奇。

这是场景:

1)如果我收到一个客户和资助者不存在的 ClientBillingMessage,我将此消息存储在 saga 中。

2)如果现在出资者消息来了,那么它就会被执行,但是传奇仍然存在,因为它正在等待客户消息

3)现在,如果客户端消息来了,它首先运行 ClientBillingSaga 的客户端消息处理程序,因此已经存在的 ClientBillingSaga 仍然存在,然后它继续执行 ClientSaga 中的处理程序以获取客户端消息。

我的问题:有什么办法可以命令执行这两个传奇。我找到了处理消息处理的 ISpecifyMessageHandlerOrdering 接口,但我认为我不能将它用于传奇。

0 投票
1 回答
75 浏览

nservicebus - NServiceBus 在 2.6 saga 中使用 4.0 Handler

我们有一个调用许多处理程序的传奇。我想开始从 2.6 迁移到 4.0,因此我已将其中一个处理程序升级到 4.0。如果我将此处理程序与其他 2.6 处理程序一起部署,并且使用 2.6 saga 调用这两种类型的处理程序,会有麻烦吗?这甚至可能吗?

谢谢

0 投票
1 回答
98 浏览

oracle - NServiceBus 4.0 没有 nHibernate 的 Oracle 持久性

是否可以使用不依赖 NHibernate 的 Oracle 实现来替换 Saga、订阅和超时的默认 RavenDB 实现。

我正在尝试将 NSB 引入尚未使用 NHibernate 的环境中,并且需要使堆栈尽可能基本。

0 投票
2 回答
517 浏览

domain-driven-design - 可能的声明性域模型(DDD)?

我正在寻找见解/论文/文章等,是否可以使用完全声明性的域模型(根据 DDD)。

例如:

  • 验证可以是声明性的(很多 ORM 都这样做)
  • 业务流逻辑可以是声明性的:通过 ddd-repositories 最有可能通过 ddd-repositories 在 Crud 操作上使用 DSL 来定义工作流/有限状态机/流程管理器/DDD Saga(无论您想怎么称呼它)
  • 决策逻辑可以是声明性的。即:大多数时候这归结为简单的条件
  • 派生/计算字段可以以声明方式完成,但有点棘手,尤其是当这种级联时。即:您必须在计算字段等上保留依赖关系图。仍然可以完成。

与实际尝试过的人的任何链接,或者一些令人信服的 couter-arguments 为什么不能这样做?

ps:请不要回答“是的,它可以完成,因为 FSM 是图灵完备的,具有足够的内存 bla bla”

0 投票
1 回答
777 浏览

nservicebus - 使用 raven db 持久性的 Saga 错误 nservicebus

我有两条消息,clientChangeMes​​sage(负责创建客户端)和clientContractChangeMEssage(负责客户端的预订详细信息)。现在,在我的数据库中,只有拥有客户合同才能创建客户,反之亦然。在我的本地系统上,一切正常,即如果首先获得客户端更改消息,我将其存储在 saga 中并等待客户端合同消息,当该消息到达时,saga 会执行这两个消息。但是在我的测试机器上,当客户端更改消息出现时,它会存储在 saga 中,但是当客户端合同更改出现时,saga 找不到客户端更改 saga,因此会创建另一个 saga。我已经用我的测试人员尝试过的完全相同的消息进行了尝试,它可以在我的机器上运行,并且无法弄清楚可能出了什么问题。我正在使用乌鸦数据库持久性。(对不起,我想不出为此粘贴任何代码)

ClientSagaState

谢谢,

0 投票
1 回答
439 浏览

nservicebus - Sagas 可以在不显眼模式下工作吗?

我有一个名为 UploadService 的端点,它包含一个由另一个程序集中定义的命令启动的 saga。该程序集中的命令通过以下行在端点的初始化中注册:

但是,当通过 Debug->Start new instance 启动端点时,NServiceBus.Core 会抛出以下异常:

“传奇 'MySaga' 实现了 'IHandleMessages`1',但消息类型 'MyCommand' 未被归类为消息。您应该使用 'Unobtrusive Mode Messages' 或者消息应该实现 'IMessage'、'IEvent' 或 '指挥部'。”

我有一个单独的端点,它引用了相同的命令程序集,并以相同的方式定义了自定义初始化,并且启动得很好(唯一的区别是另一个端点不使用 sagas)。

更新:我正在使用 NServiceBus 4.2