我的流中的传出HTTP端点返回状态500,但是Mule不会抛出任何异常。当我逐步调试流程时,在HTTP调用之后显然存在异常有效负载,但是流程一直持续到结束:
<flow name="pocFlow2" doc:name="pocFlow2">
<http:inbound-endpoint exchange-pattern="request-response" host="0.0.0.0" port="8081" path="poc/error" doc:name="HTTP"/>
<!-- This one returns 500 error -->
<http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8083" path="api/1.0/connections/connections" method="GET" doc:name="Returns 500"/>
<object-to-string-transformer doc:name="Object to String"/>
<set-payload value="All good" doc:name="Set Payload"/>
<catch-exception-strategy doc:name="Catch Exception Strategy">
<logger level="INFO" doc:name="Logger"/>
</catch-exception-strategy>
</flow>
这是预期的行为吗?每次HTTP调用后我是否必须自己抛出错误?
答案 0 :(得分:0)
是的,您需要检查响应的状态代码并采取适当的操作。 Mule不知道您正在拨打什么电话或者您期望的状态代码,因此http连接器不会抛出异常。关于Mule的一个令人烦恼的事情是,没有一种简单的方法可以抛出异常。我已经编写了一个非常简单的小ExceptionThrower java类来处理这种情况。
<http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8083" path="api/1.0/connections/connections" method="GET" doc:name="Returns 500"/>
<choice doc:name="Choice">
<when expression="#[message.inboundProperties['http.status'] == '200']">
<!-- Handle my payload -->
</when>
<otherwise>
<!-- This isn't what I expected, so throw an exception to let the catch-exception-strategy handle it. -->
<component class="com.example.ExceptionThrower" doc:name="Java"/>
</otherwise>
</choice>