问题标签 [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.
c# - 测试时以特定状态启动状态机
我正在尝试为我的状态机创建单元测试,以检查每个状态是否都做了它应该做的事情。
我可以通过发布启动状态机的事件并创建达到所需状态所需的所有变量来使状态机进入任何状态。
简化状态机:
我写了一些单元测试,我可以启动机器(按照MassTransit 文档中的本指南),但我想检查状态CheckingForFiles和ValidatingFiles是否正在做它们应该独立做的事情。
到目前为止,我可以通过跟随状态机的流程来模拟IDataService方法以达到所需的状态,但是有没有办法启动状态机并跳转到特定状态?
更新
假设我在那里有另一个状态:
在这种情况下,我可以输入CheckingForFiles然后跳转到DeletingFiles吗?可能吗?
.net - 在 SimpleInjector 中向 RedisRepository 注册 MassTransit SagaStateMachine - 多个构造函数
我可以使用 InMemoryRepository 在 SimpleInjector 容器中注册 MassTranst SagaStateMachine:
容器是 SimpleInjector 容器。
如果我将其中的行更改为:
cfg.AddSagaStateMachine<FormEvaluateStateMachine, FormEvaluateState>() .RedisRepository() ;
我从简单的注射器得到以下错误:
对于能够创建 RedisSagaRepositoryContextFactory 的容器,它应该只有一个公共构造函数:它有 2 个。有关更多信息,请参阅https://simpleinjector.org/one-constructor。
因此,它试图在某个地方为 RedisSagaRepositoryContextFactory 注册一个实现,它确实有两个构造函数。
有没有优雅的方法来解决这个问题?看起来 SimpleInjector 提供了一个允许多个构造函数的组合,但在系统范围内启用该反模式似乎有点笨拙。
有没有办法告诉 SimpleInjector 只对某些类型执行此操作?我假设我想使用采用 ConnectionMultiplexer 的构造函数,但我不确定。我会用 SimpleInjector 标记我的帖子,但我没有足够的互联网点数。
也许有更好的方法来指定 RedisRepository() 所以这不会发生?
我也在完整的框架中,所以可能没有正确注册 Redis 本身是我的问题吗?
masstransit - 自动状态机如何处理 NotAcceptedStateMachineException
有没有办法以通用方式处理 NotAcceptedStateMachineException,例如以请求-响应方法向客户端返回一些用户友好的消息?
我正在使用请求/响应来执行状态机:
我想得到该 TRes 类型的响应,但显示的是超时。我试图通过使用 OnUnhandledEvent 来处理这个问题,但在这里我丢失了有关响应类型的信息,所以我无法将其发回。任何想法如何解决这个问题?谢谢
c# - 我可以在不使用整个 MassTransit 框架的情况下使用 MassTransit/Automatonymous saga 吗?
我正在寻找最好的 .Net Saga 框架。Automatonymous 看起来很有希望,但所有示例和文档都与它的父 MassTransit 项目相关。
如果没有 MassTransit 本身,是否可以使用基于 Automatonymous 的传奇?如果是 -你将如何保持 saga 状态以及当新消息到达时你将如何重新水化 saga 状态?尽管搜索了 3 天,但我找不到有关此主题的任何内容。
c# - MassTransit Automatonymous - 发送消息时状态不变
我试图弄清楚为什么“发送”消息不会调用状态机,但是如果我“发布”消息,它会起作用,并且我可以看到状态发生变化。
以下是我的代码,它类似于文档,除了我试图“发送”一条消息。
组件
状态机:
合同:
消费者:
网络 API
Program.cs(片段)
订单控制器
工人服务
程序.cs
然后我通过邮递员做一个 POST 到:http://localhost:5000/order
It does call the SubmitOrderConsumer, but for some reason, the State machine does not get invoked (it won't hit breakpoint inside the Then handler that sets the Order Date inside Initially state.). I think I am missing something that connects the two together. Any feedback is greatly appreciated. Thank you.