由于各种原因,状态可能会遇到运行时错误:

  • 短暂性错误,如网络中断和拥塞
  • JSON路径解析错误

默认情况下,当一个状态遇到运行时错误时,整个ZIS流将失败。

行动而且地图的状态支持错误处理块。你可以使用块,以避免在状态遇到错误时整个ZIS流失败。看到使用Catch块

在某些情况下,ZIS还尝试重试失败的流。看到ZIS流重试逻辑

使用Catch块

一个block指定当Action或Map状态遇到运行时错误时要运行的回退状态。例子:

             
“亚博Zendesk。GetTickets”“类型”“行动”“ActionName”“子:集成:行动:zendesk.get_tic亚博kets”“抓”“ErrorEquals””的国家。所有的““下一个”“AnotherState”“下一个”“NextState”

Catch块支持的属性

对象中的数组支持以下属性。

的名字 类型 强制性的 描述
ErrorEquals 字符串数组 真正的 错误名称数组。唯一有效的值是“States”。所有的“,which matches all error names
下一个 数量 真正的 如果操作或映射状态遇到运行时错误且无法重试,则运行的回退状态
ResultPath 数量 参考路径用于存储状态输出。ZIS流的后续状态可以通过此路径访问输出。默认为"$",它将状态的输入替换为输出

ZIS流重试逻辑

一个正在运行的ZIS流将在以下情况下重试:

在重试期间,整个流将从头开始运行。确保您的用例和流逻辑能够说明这一点。根据重试场景不同,重试间隔时间也不同。无论如何,ZIS将只尝试运行流四次:初始尝试和最多三次重试尝试。

如果流在a上结束失败状态,ZIS将不会重试流。

在速率限制后重试ZIS流

HTTP状态码429表示“请求太多”。当API返回带有此代码的错误时,这意味着帐户太快地向API发送了太多的请求。这被称为速率限制。

一些api包括Retry-After报头中出现429错误。这个报头指定在重试API调用之前应该等待多长时间。报头可以提供等待的秒数或重试调用的日期和时间。

如果流中基于http的操作接收到429错误响应并且流失败,则流将基于Retry-After时间间隔。

Retry-After时间间隔 流重试行为
小于120秒 重试后,Retry-After时间间隔
120秒或以上 120秒后重试
没有Retry-After 30-330秒后重试。如果重试失败,请在60-360秒后尝试第二次重试。如果第二次重试失败,请在120-420秒后重试第三次,也就是最后一次重试。

在服务器错误后重试ZIS流

一个500的HTTP状态码意味着API的web服务器出了问题。

如果流中基于http的操作接收到500错误并且流失败,流将在30-330秒后重试。如果重试失败,ZIS会在60-360秒后尝试第二次重试。如果第二次重试失败,ZIS将在120-420秒后尝试第三次和最后一次重试。

手动重试ZIS流

若要对其他类型的错误手动重试流,请使用块在Action状态下捕获错误,然后在Choice状态下检查特定的错误代码。例子:

             
“StartAt”“亚博Zendesk。GetTicket”“州”“亚博Zendesk。DoSomething”“类型”“行动”“ActionName”“子:YOUR_INTEGRATION_NAME:行动:zendes亚博k。YOUR_ACTION_NAME”“参数”“ticketId美元。”“{{$ .input.ticket.id}}”“抓”“评论”“ZIS只支持捕获所有错误类型,即状态。所有的““ErrorEquals””的国家。所有的““下一个”“CheckErrorType”“ResultPath”“.do_something_result美元”“结束”真正的“CheckErrorType”“评论”"检查所捕获的错误是否为404"“类型”“选择”“选择”“变量”“美元。导致““StringEquals”由于状态代码:404,外部操作失败“下一个”“log.errorCaught.404”“默认”“log.errorCaught.other”“log.errorCaught.404”“评论”“使用此分支处理404错误”“类型”“成功”“消息”“我发现了一个404错误”“log.errorCaught.other”“评论”“使用这个分支来处理其他错误”“类型”“成功”“消息”“我发现了一个非404错误”