问题标签 [automatonymous]

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 回答
319 浏览

state-machine - 如何使用存储引擎持久化 Saga 实例并避免竞争条件

我尝试使用持久化 Saga 实例RedisSagaRepository;我想在负载平衡设置中运行 Saga,所以我不能使用InMemorySagaRepository. 然而,在我切换之后,我注意到消费者发布的一些事件没有被 Saga 处理。我检查了队列,没有看到任何消息。

我注意到,当消费者几乎没有时间处理命令和发布事件时,它可能会发生。InMemorySagaRepository如果我使用或添加将不会出现此Task.Delay()问题Consumer.Consume()

我使用不正确吗?

另外,如果我想在负载平衡设置中运行 Saga,并且如果 Saga 需要使用字典发送多个相同类型的命令来跟踪完整性(类似于处理多个事件的状态转换中的逻辑)。当多个消费者同时发布事件时,如果两个 Sagas 同时处理两个不同的事件,我会出现竞争条件吗?在这种情况下,State 对象中的 Dictionary 是否会正确设置?

代码可在此处获得

SagaService.ConfigureSagaEndPoint()InMemorySagaRepository是我在和之间切换的地方RedisSagaRepository

LeafConsumer.Consume 是我们添加 Task.Delay() 的地方

0 投票
2 回答
1297 浏览

.net-core - .Net-Core 2.2 MassTransit.ConfigurationException:状态机未正确配置

新手问题 - 我错过了什么?是否有可用的 dotnetcore 2.2 Saga 示例?

我有一个基本的端到端系统工作正常,消息在 docker-compose 中跨容器流动,但添加 Saga 似乎是一个挑战 -

问:我是否缺少调度程序依赖项?在 MassTransit 5.5.5 中,cfg.UseInMemoryMessageScheduler(); 不编译。

发生了一些奇怪的事情,我不得不将我的状态机明确标记为 ISaga

MassTransit.ConfigurationException:无法为 Model.WorkflowExecutionStateMachine 创建状态机连接器 ---> MassTransit.ConfigurationException:未正确配置状态机:workflowapi_1 | [失败] 未指定 ExecutingTask

巴士启动如下 -

异常详细信息是

未处理的异常:MassTransit.ConfigurationException:无法为 Rapid.Workflow.Api.Model.WorkflowExecutionStateMachine 创建状态机连接器 ---> MassTransit.ConfigurationException:未正确配置状态机:workflowapi_1 | [失败] ExecutingTask 未指定 workflowapi_1 | 在 Automatonymous.StateMachineConfigurationResult.CompileResults(IEnumerable 1 results) workflowapi_1 | at Automatonymous.StateMachineConnectors.StateMachineConnector1.StateMachineEvents()+MoveNext() workflowapi_1 | 在 System.Collections.Generic.List 1.AddEnumerable(IEnumerable1 可枚举) workflowapi_1 | 在 System.Linq.Enumerable.ToList[TSource](IEnumerable 1 source) workflowapi_1 | at Automatonymous.StateMachineConnectors.StateMachineConnector1..ctor(SagaStateMachine 1 stateMachine) workflowapi_1 | --- End of inner exception stack trace --- workflowapi_1 | at Automatonymous.StateMachineConnectors.StateMachineConnector1..ctor(SagaStateMachine 1 stateMachine) workflowapi_1 | at Automatonymous.SagaConfigurators.StateMachineSagaConfigurator1..ctor(SagaStateMachine1 stateMachine, ISagaRepository1 个存储库,ISagaConfigurationObserver 观察者)workflowapi_1 | 在 MassTransit.AutomatonymousReceiveEndpointExtensions.StateMachineSaga[TInstance](IReceiveEndpointConfigurator 配置器,SagaStateMachine 1 stateMachine, ISagaRepository1 存储库,Action`1 配置) workflowapi_1 | 在 Rapid.Workflow.Api.Startup.<>c.b__2_5(IRabbitMqReceiveEndpointConfigurator ep) 在 /src/Workflow.Api/Startup.cs:line 74

依赖项是

感谢您的任何提示或想法 -

0 投票
0 回答
379 浏览

masstransit - Masstransit Automatonymous:丢弃丢失 sagas 实例的事件进入错误队列

使用 Redis 的自动化:多个状态机 Sagas 使用相同的事件。当事件发布(扇出)时,不期望事件并使用 x.OnMissingInstance(x=>x.Discard()) 的 sagas,发布事件将进入错误队列。我期待它只是忽略而不将其放入错误队列。请说清楚

0 投票
1 回答
997 浏览

c# - Masstransit Sagas 和自定义活动的依赖注入问题

我正在为分布式系统实现 Saga。到目前为止,我在使用 Masstransit 文档来实现没有任何有意义行为的 Saga 时没有遇到任何问题(只是一个带有几个微服务交换消息的协调器)。

下一步是在 Automatonymous 状态机的状态更改之间添加一些行为。我有一个具有所有必需行为的服务,所以我想创建使用依赖注入的服务的海关活动。

问题是活动没有很好地解决,并引发以下错误:

文档没有明确说明我们应该如何使用 .NET Core 的默认 DI 系统包含自定义活动。我还在 Stackoverflow、Github 存储库和Google Group中查找了这些信息。

在我的 Startup 课程中,我按照官方文档中的说明配置了 Masstransit:

如果我理解正确,我必须以某种方式使用IStateMachineActivityFactory但我真的迷失了如何继续。任何帮助将不胜感激。

0 投票
0 回答
36 浏览

c# - 消费者传奇何时/如何完成?

关于 sagas的 MassTransit文档描述了如何

默认情况下,实例不会从 saga 存储库中删除。

它继续描述了如何将 saga 标记为从 saga 存储库中删除。

消费者传奇的文档没有提到完成。

如何从 MassTransit 的 saga 存储库中删除消费者 saga?

0 投票
2 回答
188 浏览

entity-framework-core - 使用 Automatonymous 时状态机不一致

我是微服务的新手,并且使用自动匿名的公共交通。目前我的状态机在执行时显示不一致。Initially 内部的代码按预期工作,但在第二个事件完成后,控制流不执行 during 内部的代码。这只发生在 1 个状态机上,所有其他状态机都按预期工作。当我将代码中的代码移动到最初(最初注释代码)时,它工作正常。下面是我的状态机的样子:

下面使用 RabbitMQ 进行 Masstransit 设置

我尝试了 SetCompleted 和 SetCompletedWhenFinalized()。我们将 Masstransit v6.2.1 与自动 v4.2.1 一起使用。需要帮助来确定我们为什么会遇到此问题或实施是否有问题?

0 投票
1 回答
275 浏览

entity-framework-core - 多个使用 EFCore 持久性的自动匿名状态机不起作用

我们使用带有自动匿名和 InMemoryRepository 的 Masstransit 来实现 saga 持久性。我们配置了大约 3 个状态机并且运行良好。我们最近从 InMemoryRepository 更改为 EFCore 以实现持久性。这导致只有第一个配置的状态机可以完美运行。休息所有状态机甚至没有进入 Initially 事件。需要帮助来了解实施是否正确。以下是代码详细信息:

大众运输状态机设置

所有 3 个状态机的 DBContext 如下所示

下面的状态图

从上面的代码中,只有 ServiceRequest1RegisterStateMachine 可以正常工作,其余的状态机甚至都没有进入 Initially。我可以确认迁移都是事先完成的,并且当仅存在 1 个存储库配置时,这些状态机都可以单独正常工作,即,如果只有 ServiceRequest1ApproveStateMachine 的 repo 配置,则此状态机可以正常工作。但是如果所有 3 个 repo 配置都存在,那么只有第一个有效。我需要有关使用 EFCore 正确实现 saga 持久性的指导。我是否应该尝试使用 masstransit 文档中提到的单个 dbcontext 来实现(https://masstransit-project.com/usage/sagas/efcore.html

0 投票
1 回答
589 浏览

masstransit - MassTransit 中的消费者传奇 vs Automatonymous

究竟什么是消费者传奇,它与 Automatonymous 有何不同?我知道 Automatonymous 是 MassTransit 使用的一个单独的库。

0 投票
1 回答
82 浏览

masstransit - 需要StateMachine的Activity例子

我正在学习 MassTransit 的 StateMachine,它对我的​​用例很有帮助,非常喜欢它,现在我想了解更多关于如何正确使用 Activity 但很难找到文档/示例的信息,请帮助我解决一些问题:

  1. 做什么ProbeAccept方法做什么?例如:

Scope和是什么Visitor

  1. 我像这样链接 2 个活动

    .Activity(x=>x.OfType<FirstActivity>())

    .Activity(x=>x.OfType<SecondActivity>())

FirstActivity.Execute方法中,它抛出异常但SecondActivity.Faulted从未命中,如何正确设置它们?

谢谢你。

0 投票
1 回答
382 浏览

c# - 如何在 MassTransit 和 Automatonymous 中配置 EF Core 持久性?

我正在尝试使用 EF Core 配置 Automatonymous worker 实现作为持久性。我通过 api 发布事件并使用 RabbitMq 作为传输在托管服务中处理它。不幸的是,数据库不存储机器状态。我应用了迁移并看到了 table OrderState,但是在发布OrderSubmmited事件后其中没有数据。它得到了正确处理,因为我在控制台中看到了一个日志,但数据库表仍然是空的。我错过了什么?

这是我的代码:

事件:

消费者:

我的传奇实例:

状态机:

数据库上下文:

节目类:

工人阶级: