除了MaximumSignalsPerExecution
之外,还有其他方法可以发出工作流拒绝信号吗?
基本上,我有一个工作流,它在超时前会定期继续运行。但是,如果它在继续像新的一样工作之前不断收到大量信号,它将会超时并丢失一些信号。我可以将< code > MaximumSignalsPerExecution 设置得更低,这样它就会在超时之前拒绝信号,但理想情况下,我希望能够在工作流级别进行配置。
我正在测试一些更糟糕的情况,其中存在流量峰值,并且工作流每秒将获得多个信号。
除了Emrah的详细回答之外
首先,回答您的问题:不幸的是,没有任何其他限制可以阻止发送的信号数量。不过,我不确定这会有多大用处。signal
、start
andsignalbeart
API是Cadence用户调用的最关键的API之一,因为这些API将数据保存在Cadence中。我们通常会尽量保持这些API的高可用性,以便我们能够接受和保存这些请求附带的数据。否则,客户机要么必须有一个回退数据存储来保存Cadence拒绝的请求,要么只将故障传播到上游。
MaximumSignalsPerExecution
限制的主要好处是保护Cadence数据库免受单个工作流执行的无限增长。我不建议仅仅为了改进一个用例而使用它。
信号和< code>ContinueAsNew之间的竞争是一个相对常见的问题。我有一些想法来解决它,但我不认为我们能够很快做到这一点,因为竞争的优先权。同时,我认为最好的办法是为你的工作流程设定正确的期望值。设计工作流程时,您应该记住以下两条原则:
就你的情况而言,如果你还没有考虑过,你应该考虑以下想法:
在Cadence/Temoral工作流编程中: < li >不允许使用本机线程库。例如,在Java中,线程必须通过< code>Async.procedure或< code>Async.function创建,而在Golang中,线程必须通过< code>workflow创建。去吧。那为什么呢? < li >有没有类似使用本机线程的竞争条件?例如,为了线程安全,应该使用< code>Hashtabl
我正在关注https://cadenceworkflow.io/docs/go-client/workflow-testing/#setup,并看到带有。 如何设置(例如,使其包含测试名称)?我正在使用Go。
在执行任务时,如果出现故障,希望定义配置以在一定间隔后重试并从失败的任务中恢复。是否可以实现恢复选项?
为用户可视化节奏工作流的最佳方式是什么? 我想在一个高层次的视图中向用户展示工作流的不同步骤(类似于大多数食品配送应用程序的功能:下单- 我对向用户展示实际执行的节奏活动不感兴趣,因为我不希望他们看到我的工作流程的详细信息,我只想可视化他们感兴趣的某种高级阶段。 一种方法是保留工作流的高级描述,并在工作流代码本身内部进行状态转换(在启动活动 X 时将阶段 Y 标记为已启动等)。但是,我试图将这个问
我偶然创建了一个错误的域名,或者经过一些测试后,我想删除该域名。我应该那样做吗?又是怎么做到的?
我正在运行节奏,卡桑德拉使用 docker run -e CASSANDRA_SEEDS=10.x.x.x e 超级数据库/服务器运行:。并成功运行。 Azure cosmos表示,任何运行在Cassandra上的系统都可以使用Azure cosmos,使用提供的cosmos cassandra APi,通过修改客户端连接创建代码,例如:GO app示例代码: Func Get会话(cosmosC