文章目录
前言
前面的基础组件已经可以满足正常的使用了,本节将介绍Until Successful组件也会在一些场景下出现,不过使用频率远不如前面讲到的组件。下面我们就来介绍这个组件:
名称 | 作用 |
---|---|
Until Successful | 尝试以异步方式将消息路由到它所包含的消息处理器。如果没有引发异常,并且响应匹配表达式(可选),则认为路由是成功的 |
Until Successful
- 为了对比区别,我们在不启动后端的情况下使用PostMan对Mule APP进行访问,这样就可以制造一个Request请求错误。使用Debug模式启动Mule APP使用PostMan对Mule APP进行访问。
- 为Request组件打上断点,进行访问,查看流程。
- 发生错误,错误类型为HTTP:CONNECTIVITY
- 向下执行发现,Mule APP并没有捕获错误(这个问题我们将在之后的章节中解决)
- 查看PostMan中的返回值,由于没有捕获到错误,所以没有错误Message。返回体就是请求体,并没有改变。(这种情况是不正常的!)
- 使用Until Successful组件,在Core工具栏中选择Until Successful放到employeeapi-Choice_Flow中,再将以前的Request组件放入Until Successful组件中。
名称 | 作用 |
---|---|
Max Retries | 最大重试数 |
Milliseconds Between Retries | 重试时间间隔 |
- 为了方便观察我们把重试次数设置为2,重试间隔时间设置为1000毫秒。使用Debug模式,使用PostMan发送请求
- 一样会报错,但是有Until Successful组件,请求会重新尝试两次。这时错误类型是HTTP:CONNECTIVITY
- 由于Until Successful组件的原因错误类型发生了改变MULE:RETRY_EXHAUSTED