我对传奇模式很陌生。我明白,在佐贺的帮助下,如果发生任何失败,我们能够扭转局面。
无论我看到什么样的例子,它们大多都像订单服务-
但是,我的问题是:我有这样一个相反的场景:支付服务-
在支付服务中,资金从商户流向客户
如果客户服务发生任何故障,我们是否可以使用Saga逆转付款交易?(即,将资金从客户逆转给商家,以防发生任何故障)
上面可能使用佐贺吗?希望我的问题是清楚的。如果有人能在上面帮助我,我会很高兴。
saga模式允许您协调多个操作,以防其中一个步骤出现故障,它允许您协调步骤以反转到目前为止所做的事情,因此您可以在没有实际事务的情况下以使所有步骤事务性
的方式查看它。
但是传奇并不能改变你所做的每一步的本质。向客户收费是一种我们可以逆转的操作,因为我们可以创建补偿行动,例如将资金退还给客户。向客户付款是一种我们无法逆转的操作,因为一旦钱在客户手中,我们就无法收回。因此,一个传奇可以帮助你确保所有的步骤都已经发生,或确保什么都没有发生,但它不会让你扭转无法扭转的事情。
在这种情况下,您可以做的是保留最后无法反转的操作。例如,将客户钱包中的钱打折(这是您拥有的数据库上的操作),然后进行实际付款。如果支付失败,传奇故事将允许你从客户的钱包中扣除,因此不会造成“损害”。
更新:根据评论添加额外信息
传奇(通常)是通过消息传递实现的。这部传奇是编曲,它并没有真正完成实际的步骤。相反,它发送命令,以便其他进程执行这些步骤,并接收带有操作结果的消息或事件。
此外,请注意,由saga执行的步骤可能有瞬时故障或不可恢复/永久故障。暂时性故障可以重试,很可能会成功。通过重试,永久性失败不会成功。
考虑到这一切,我将解决这个问题如下:
我希望这有意义。您需要确保涵盖所有场景,并且即使操作失败,您也可以可靠地发送消息。
我正在尝试安装节点帮助模块,但经过多次尝试,我不断得到以下错误。node-help包的安装是否已中断? /usr/local/lib/node_modules/node-help/bin/node-help:6 const{homedir}=require('os');^ SyntaxError:意外标记{at exports.runinthiscontext(VM.js:53:16)at mod
在我看来,传奇模式在很多方面都是聚合模式的倒置。首先将命令处理成域事件,然后在聚合的情况下将此域事件应用到状态中是很有用的,但我认为在saga的情况下,域事件是已经发生的事情的文档,应该在试图对状态做出反应之前应用到状态中。 现在我的问题是:对于模块,有没有一种方法可以将命令配置为首先,然后?或者这是一个严重的bug,需要在一般情况下进行修复?
社区帮助 社区帮助是 adobe.com/cn 上的一个集成环境,允许您访问由 Adobe 和行业专家主持的社区生成的内容。用户的注释可帮助您找到答案。搜索 “社区帮助 ”,查找 Web 上关于 Adobe 产品和技术的最佳内容,包含以下资源: 视频、教程、提示和技巧、博客、文章及设计和开发人员的示例。 完整的联机帮助。此联机帮助会定期更新且比随产品提供的 “帮助 ”更完整。访问帮助时,如果连接到
安全模式 此预发行版本中引入了一项新功能,允许您在出现错误而无法启动 Illustrator 时,从这些错误中恢复。 倘若遇到导致 Illustrator 在启动时崩溃的情况。例如,字体损坏、增效工具错误或首选项文件损坏。如果启动失败,则在下次尝试启动时,可以选择以“安全模式”启动 Illustrator。Illustrator 启动时将检查是否存在任何导致错误的文件。以“安全模式”启动 Illu
我想检查一下字符串是否能够转换为float或int。 例如: 我收到 此值可以通过以下方式转换为float 但如果我收到 我的应用程序会崩溃。那么我如何检查我收到的字符串是否能够转换成浮点呢? 对于Int,我如何做到这一点?
我们很乐意帮助您让您的用例可以用 linkerd 工作,并且我们对您的反馈很感兴趣! 如果您遇到问题或认为您发现bug,请先查看 常见问题。如果您仍然需要帮助,您可以通过几种方式与我们联系: 在 linkerd Discourse instance 提出有关配置或故障排除的问题。 在 github issues中提交bug或功能请求。 在我们的 linkerd public Slack 中聊天。