我们的主编排有多个子编排。所有根编排都是事务类型:none,因此所有sub也具有相同的性质。现在,任何异常都会在主编排的父作用域中捕获,并且我们有一些步骤,例如日志记录。使用App SQL中的消息激活业务流程。因此,每次发生异常时,都会因为无法连接到Web服务而断断续续。我们后来手动重新触发。
我正在考虑将orch修改为自我修复,例如从异常捕获块中根据条件重新初始化消息,问题是间歇性的。像app issue-null reference这样的东西,我们不想重发消息,因为,orch永远不会起作用。
有一个称为补偿的概念,但如果任何1失败,那就是基于事务的步骤,执行其他步骤(可以执行备用操作或清理)。
我唯一的想法是根据异常中的关键字进行查找并决定重新发送消息。但我希望some1能够挑战这一点或提出更好的方法
答案 0 :(得分:1)
我一直认为离线处理失败会更好。因此,如果业务流程失败,请终止它。但在终止之前,请发送消息。如果发现存在导致失败的临时问题,则此消息将包含恢复消息处理所需的所有信息。该消息可由负责恢复的“看护人”进程使用。
这类似于Erlang OTP框架如何接近高可用性。流程快速失败,管理员流程确保恢复。