在当前的应用中,我们有三个服务:
为了沟通,我们有一个编配传奇。流程基本上使用发票作为协调器:
问题1如果我用的是时态或cadence(只是找一下),他们不像上面那样依赖于发布订阅模式。那么我该如何实现呢?
我在想(CMIIW):
所有这些Workflow
和活动
都是发票服务应用程序的一部分。但是银行转账服务和分类账服务现在提供了处理转账的应用程序接口(就银行转账而言,它实际上是外部银行账户的代理应用程序接口),分类账服务提供了创建借记/贷记日志的应用程序接口。CMIIW,在这种情况下,我们不再需要在银行转账服务和分类账服务上创建侦听器(或节奏/时间活动),我们需要提供应用程序接口。
还是我想错了?银行转账服务和分类账服务应该有一些活动?但是如果有,发票服务如何触发和安排工作流程?
问题 2 但现在调用是异步的。日记账分类账的创建实际上有一些验证,有时负载很重,因此取决于队列上的消息,从消息转到 rabbitmq 到实际创建日志可能需要长达 5 分钟的时间。在 API 调用时,这将是一个超时。
问题3比赛条件如何?要按顺序创建的某些日记账。使用rabbitmq,我们可以通过某些技术(队列中的单个消费者,类似于kafka主题)来实现这一点。
问题4 另外,如何处理补偿交易?如果账本失败了,我们必须做点什么。在我们的例子中,我们必须通知某人会计,因为银行转账已经处理并且无法逆转。
问题5:对于一些子公司,当分类账失败时,我们仍然有控制权,因此我们可以补偿/提取发票金额,并将金额退还给母公司。假设我们在银行转账服务上有一个侦听器,我们如何触发补偿API?
在节奏/时间中,这是合适的用法吗?如果是,如何处理上述问题?
谢啦
TLDR;这个用例非常适合时态,因为它极大地简化了您的代码和操作。
问题 1
我会推荐在他们的通讯服务中举办活动。因此< code>InvoiceActivity应该由发票服务托管,而< code > BankTransferActivity 应该由银行转帐服务托管。这消除了创建同步API的需要,并确保了工作流和活动实现之间的流程控制。请看这篇文章,它对此有更详细的解释。
只有在这种情况下,发票服务应用程序才会托管工作流代码。
问题 2
在相应服务中托管活动可以解决此问题。临时支持无限持续时间的活动。请注意,建议对长时间运行的活动进行心跳检测,以确保及时检测故障。
问题 3
确切的解决方案取决于确切的需求。在大多数情况下,需要特定排序的日记帐分录应该在单个工作流中进行编排。
问题4
通过确保工作流代码最终完成,使得支持补偿动作变得微不足道。这里有一个来自Java SDK样本库的传奇例子。
问题 5
只是将这个补偿逻辑作为同一个工作流的一部分。
有人能帮我了解以下情况吗?我有1个工人配置如下: 如果我将“最大当前工作流任务可执行文件大小”和“最大当前活动可执行文件大小”设置为 1024,则工作线程开始工作太慢。我认为增加这两个选项将有助于处理更多的活动和工作流任务,但它的工作方式不同。工作线程具有足够的 CPU/RAM,并且他根本没有过载。 从临时UI中,我能够捕捉到一些工作流在这样的历史状态下冻结了一段时间: 我还调整了这样的匹配参数:
可以运行不需要连接到cadence服务器的本地活动。是否有适当的方式在本地运行工作流,以防发生cadence中断?我正在使用Go客户端。
我是Cadence/Temporal的新手,想知道设计审查过程是什么样的。我的团队已经准备好进行正式的设计审查,但想知道是否有模板可以捕获Cadence/Temporal的特定信息?
temporal.io如何与cadenceworkflow.io?如果根据节奏工作流服务启动一个新项目,应该使用什么?
小法师有一阵子没动静了,为什么又冒出来了呢?因为这次比较特殊 下午小法师正在阳台上晒太阳,看着前两天女神推荐的乌合之众,无聊了刷下 Q,看到女神在线,就去聊了两句 本来没有没想到女神每句必回,响应十分迅速 按说小法师应该十分高兴,但他却本能的感觉到了一种凉意 —— 太反常了 小心翼翼的试探: 加薪了? 没 升官了? 恋爱了?小法师已经打好还没发出去的时候 女神就自动把这个好消息告诉了小法师 小法师
我有两个名为 w1 和 w2 的工人 W1主持活动A1。 如果w1出现故障,它是否会在w2上自动创建以处理服务器故障转移? 我试了一下,但是显示ActivityTimeOut错误,工作流失败。 难道我们没有其他选择来处理这样的故障转移吗? 在这种情况下,活动不会超时。由于工作机崩溃,它没有在预期时间内响应cadence服务。这是将它称为ActivityTimeOut的正确方法吗?相反,难道我们不能